自制反汇编逆向分析工具 迭代第五版本 (一)
这个版本添加了几个功能,分开几篇来写。
本篇是关于这样一个功能,显示选定的条件指令与其它条件分支的关系。
它们的关系分别在初版分支形态分布图,和第二版的汇编代码对应图同样展示。
红色表示被选中的目标
蓝色表示被选定的指令的执行位置之前,可能因为条件跳转而直接跳入到被选中的条件分支内(,忽略该条件判断)。
绿色表示在被选中的条件分支内,因为其它条件跳转而直接离开目前分支的代码。
紫色表示在被选中的条件分支内,无条件跳转分支并且直接离开目前分支的代码。
浅紫色表示在被选中的条件分支内,无条件跳转分支但仍然在目前分支代码内。
浅灰色表示与被选中的条件分支的关系是,包含,或被包含,和并列,与被选中的条件指令的关系比较简单,不给与高亮警示。
使用时可以在逆向分析过程中,定位在关注范围内细致分析。
也可以单步向前查看跳转的关系变化,如下面的4张效果图:
在逆向分析过程中,根据跳转的关系形态就可以选定一种分支结构模式来进行进一步套用分析。
最简单的就是包含关系,(并无蓝线,绿线,紫色出现),可以套用模式:
if (!) { if (!) { // ... } }
以及同样简单的是并列关系, (并无蓝线,绿线,紫色出现,但并不互相包含和被包含),可以套用模式:
if (!) { } if (!) { } // ...
有其它颜色的话就要具体分析,应用某种分支结构模式来逆向。
这个功能就介绍到这里,也是这个工具的基本出发点。
分支结构就像是函数机器码的组织结构,如果不清楚分支结构(组织结构)去逆向分析一段反汇编代码,就如读丢失了分区组织信息的分区数据一样。
逆向深入objc,c++
windows下仿objc动画层UI引擎