这里的问题是,您首先必须生成正确的汇编代码,然后使用给定的方法将其直接隐藏到二进制文件中。手动执行此操作非常痛苦,尤其是当您必须注意代码中的静态跳转时。现在,我正在使用nasm,更确切地说是使用它的预处理器来执行伪装操作。但是,我想知道是否还有更好的方法。
那么,您使用什么工具或技巧来生成此类二进制文件?
#1 楼
通常,您要做的是在可执行文件中创建一个新段,将入口点更改为新段。您的新段具有原始代码的解密代码,并且更改的入口点现在意味着在加载可执行文件时要执行的第一个代码是您的解密代码。然后,您的加密代码要么将一个段映射到通常在原始可执行段所在的地址,然后将源段解密为映射的段,要么直接将其解密。如果您的代码将段解密到位,则需要确保从原始可执行文件中删除所有重定位。
在所有情况下,除非您将解密的可执行文件段映射到其原始预期地址,否则您需要在解密后自行进行重定位,以使可执行文件不会崩溃。我个人将实现重定位以支持诸如ASLR之类的东西。解密和重定位后,您只需调用原始入口点即可。可能。
评论
这可能是复仇的时光,因为该站点主要关注理解此类代码。@nneonneo好点..是针对逆向工程站点的主题创建混淆和保护方案。还是仅在主题创建后才了解这些方案?我认为逆向工程师至少对这些主题肯定具有独特的见识。
是的这肯定是一个灰色地带。我认为,混淆技术的直接创造(而不是为了扭转它们)是旧约。在这个早期阶段,弄清楚主题中的内容和内容不重要非常重要。
我只是用这些来创造严峻的挑战,以训练我的学生进行逆向工程。以我的拙见,将其标记为OT有点苛刻,因为我们必须研究领域的两面,以假装对正在发生的事情有所了解。
这个问题很重要。如果您不同意,请在这里说明原因。