如何为 IDApython 中包含循环的函数着色?
如果基本块的结尾可以跳到基本块的开头,那就足够了,即使在极少数情况下,这也不是循环。但是我该如何实现呢?
编辑:这不好,因为循环可以跨越多个基本块。或者,也许如果使用ecx
寄存器?我不在乎我是否有一些误报?
如何为 IDApython 中包含循环的函数着色?
如果基本块的结尾可以跳到基本块的开头,那就足够了,即使在极少数情况下,这也不是循环。但是我该如何实现呢?
编辑:这不好,因为循环可以跨越多个基本块。或者,也许如果使用ecx
寄存器?我不在乎我是否有一些误报?
有一个名为 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
不是一个好方法,因为这个寄存器经常用于其他目的。更好的方法是寻找块之间的后边缘。