如何制作有效补丁绕过自检安全措施?

逆向工程 dll 修补
2021-06-26 01:09:19

我有一个要修改的 DLL 文件。每次执行导入 DLL 的可执行文件时,它都会执行自检过程,以确定文件是否有效。我怎样才能绕过这种安全措施?我希望能够使补丁与有效文件相同,除了代码本身。此外,我不完全知道安全措施如何确定文件是否有效。因此,将安全措施视为一个黑匣子,我们将在其中实施渗透测试。

3个回答

不可能以通用的“黑盒”方式盲目绕过完整性自检。您需要找出究竟执行了什么检查,然后使用相应的方法绕过它(如果存在)。

由于您声明它是自检,因此您必须反转 DLL 并找出如何执行检查。好消息是自检应该始终是可移动的。

根据进行验证检查的确切时间,您可以简单地重命名 DLL 并用您自己的替换原始 DLL。在这种情况下,您的 DLL 必须加载原始 DLL,以便将其放入内存中。您的 DLL 还必须导出与原始 DLL 相同的函数,但将它们中的每一个都转发到原始 DLL。这不是一项微不足道的工作,但它可能比尝试查找和禁用检查本身更好。

或者,也许您可​​以制作一个加载程序而不是“物理”补丁。由于您的问题非常通用,因此这是一个非常通用的解决方案,在内存中修补字节有时对于绕过完整性检查非常有用。