idapython 查找包含循环的函数

逆向工程 二元分析 蟒蛇
2021-06-29 16:45:40

如何为 IDApython 中包含循环的函数着色?

如果基本块的结尾可以跳到基本块的开头,那就足够了,即使在极少数情况下,这也不是循环。但是我该如何实现呢?

编辑:这不好,因为循环可以跨越多个基本块。或者,也许如果使用ecx寄存器?我不在乎我是否有一些误报?

1个回答

有一个名为 Loop Detection 的 IDA 插件可以做到这一点,它附带源代码和解释其工作原理的论文。查看loop_detection.cpp并参考论文以了解其工作原理。

带源代码的插件:http : //www.openrce.org/downloads/details/9/Loop_Detection 论文:http : //www.uninformed.org/ ? v=1&a =2& t= pdf

寻找使用 ofecx不是一个好方法,因为这个寄存器经常用于其他目的。更好的方法是寻找块之间的后边缘。