我正在从事一个 RE 项目,并且有一个对我有很大帮助的工具的想法,并想看看它是否已经存在。
我想在二进制文件中找到代码的特定部分。搜索字符串等没有多大帮助。所以,我有一个想法,如果我可以运行程序两次,一次我会让程序执行与我正在寻找的代码相对应的事情,第二次我不会执行该操作。
如果我在两次运行期间都执行了一些基本块,我也许可以做一个“差异”并使用它来缩小功能在二进制文件中的位置。
这样的工具是否已经存在,或者是否有更好的方法来缩小代码执行的范围。
我正在从事一个 RE 项目,并且有一个对我有很大帮助的工具的想法,并想看看它是否已经存在。
我想在二进制文件中找到代码的特定部分。搜索字符串等没有多大帮助。所以,我有一个想法,如果我可以运行程序两次,一次我会让程序执行与我正在寻找的代码相对应的事情,第二次我不会执行该操作。
如果我在两次运行期间都执行了一些基本块,我也许可以做一个“差异”并使用它来缩小功能在二进制文件中的位置。
这样的工具是否已经存在,或者是否有更好的方法来缩小代码执行的范围。
这种方法通常称为“差异调试”。我知道以下工具可以提供帮助:
在任何允许脚本断点的调试器中快速实现一些东西并不难:
你可以查看一个 ollydbg 插件 conditional branch logger
http://www.woodmann.com/collaborative/tools/index.php/Conditional_Branch_Logger
它解析条件分支的可执行文件(je , jne .... jecxz....loopd etc)
在它们上设置日志断点并将结果记录到 txt 中,该 txt 可用于区分两个不同执行场景之间的路径转移