在 exe 中更新挂钩函数地址的简单方法是什么

逆向工程 C++ dll注入 函数挂钩
2021-06-22 03:43:44

我已经在 exe 中使用了一些函数。我想知道在 exe 有了新版本(不是我的 exe)之后,是否有任何简单的方法来检测这些函数的内存地址。仅扫描 exe 以获取函数字节并与之前的结果进行比较的最佳方法是什么?这可以足够快地实现以将其添加到我的注入代码中吗?

1个回答

这真的取决于你挂钩的功能。如果它们不太可能改变,那么扫描字节将是天真的解决方案。它应该相对较快并且工作得很好。

如果函数可能已经改变(补丁、删除、不同的编译器/构建环境等),那么您可以尝试为这些函数找到字节串“签名”。理想情况下,该签名应该是唯一的(仅在该函数中),但也要尽可能小(以减少在新二进制文件中修补这些字节的可能性)。这将是相当hack-y。

请注意:如果它是一个 DLL,您可以相当简单地遍历 PE 导出表以找到新的偏移量。

还有 Bindiff,现在免费:https ://security.googleblog.com/2016/03/bindiff-now-available-for-free.html

Bindiff 是一个 IDA 插件,也可能会解决您的问题。

我会说尝试扫描字节,看看你成功定位了多少。简单的解决方案是最好的解决方案!:)