如何生成带有“指令伪装”混淆的二进制文件?
逆向工程
工具
混淆
2021-06-21 01:37:30
1个回答
一般来说,您要做的是在可执行文件中创建一个新段,将入口点更改为新段。您的新段具有原始代码的解密代码,现在更改的入口点意味着加载可执行文件时要执行的第一个代码是您的解密代码。
然后,您的加密代码要么映射一个段,通常在原始可执行段所在的地址处,然后将源段解密为映射的段,要么直接就地解密该段。如果您的代码就地解密了该段,您需要确保从原始可执行文件中删除任何重定位。
在所有情况下,除非您将解密的可执行文件段映射到其原始预期地址,否则您需要在解密后自己进行重定位,以免可执行文件崩溃。我个人会实施重定位以支持 ASLR 之类的东西。解密和重定位后,您只需调用原始入口点。
这样您就不必为特定的二进制文件创建加密或“屏蔽”代码,并且将来应该可以将其应用于任意二进制文件。