我正在尝试对使用大量控制流扁平化混淆的可执行文件进行逆向工程(即,许多以 jmp esi、jmp eax 等结尾的子例程)IDA Pro 无法解决跳转可以分支到的位置和我不确定在这里做什么。
我为 x64dbg ( https://github.com/JeremyWildsmith/x64dbg_scripts/blob/master/traceAreas.py )制作了一个插件,它在提供的子程序列表中定位和监控分支指令,并生成我正在阅读的 graphml 图(即像这样的例子:https : //i.imgur.com/kL4USza.png ),我正在 yEd live 中查看和分析。
但它会产生大量数据。我知道有一个虚拟机在那里的某个地方闲逛,但由于所有的混淆,我很难找到它。收集到的控制流数据在这里(警告,大文本文件,45kb)https://github.com/JeremyWildsmith/x64dbg_scripts/blob/master/flow.graphml
当我在 yEd Live 中打开它时,它看起来像是有多个虚拟机之类的?是的,如果有人有任何很棒的建议,我不确定该去哪里。
如果我查看径向图中的控制流(https://imgur.com/a/6QPgZ),我想我可以将中心识别为字节码指令的某种调度程序或解释器?但让我失望的是稍后通过执行进行了多少分支。
谢谢。