我尝试开发一个不依赖于在pe文件中添加更多部分的打包器。在以下两种情况下,如何为入口点周围的解密器存根插入空间:
在编译时,意味着我有一个源代码,我想告诉编译器(在我的情况下:gcc -minGW64)在maincrtstartup /入口点附近插入一些nop
指令?
使用二进制文件,这可能要困难得多。
据我所知,我需要将二进制文件拆分为2个(在入口点),在它们之间添加nop
,再次合并它们并修复所有函数地址和pe头中的值。是否有可以将nop插入二进制文件的库(Python,C ++)?
编辑:进一步指定第二种情况:
假设您有一个pe格式的二进制文件,并且您希望将一些nop操作码插入到文件的.text段中。
假设文件的程序集如下所示:
push ebp
add eax, 5
inc ecx
pop ebp
我想在add eax,5和inc ecx之间插入一些nop。
答案 0 :(得分:0)
你需要某种热点吗?问题有点宽泛,但您可能需要查看https://blogs.msdn.microsoft.com/oldnewthing/20110921-00/?p=9583
我认为它需要使用MS VC
答案 1 :(得分:0)
对于#1,我认为这不能在C编译器中完成。你可以使用内在函数。但我不确定你可以在全局范围内使用C内在函数来做一个包装器。我想有可能创建一些静态空间并在运行时执行它来编写nops并复制函数。尽管如此,我认为最简单的方法是编译函数,将指令从反汇编复制粘贴到.asm文件并添加你想要的那些nops,然后再用nasm或你决定使用的汇编器进行编译并链接obj。
我认为#2没有任何公共图书馆。
答案 2 :(得分:0)
制作一个c ++可执行文件,该文件将启动“破裂”的.exe进程,然后立即将其暂停,在CheatEngine中找到的某个内存地址处对函数进行点按(我认为nop的十六进制代码为x90,因此请更改op您在用作弊引擎找到的内存地址中找到的代码),然后恢复.exe,然后运行该文件。然后,现在这是您破裂的启动器。
或者找到一种使用未破解的exe重新编译c ++ .exe的方法。