za233 / IDADeflat

deflat plugins for ida pro

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

IDADeflat

  • 一个半自动化去除控制流平坦化混淆的插件
  • 如果不了解真实块是什么,建议了解后再使用本插件

使用方式

  • 1.下载后直接放入IDA Pro的plugins文件夹中
  • 2.在菜单Edit/Plugins/IDADeflat启动插件
  • 3.启动插件后,在反编译窗口即可右键找到对应插件菜单
  • 4.选定需要去平坦化的函数,选定或者导入识别的基本块后,选择Deflat GOGOGO开始去平坦化。
  • 5.能够通过读取相同目录下的blocks.json文件导入真实基本块的数据。

插件原理

  • 插件能够进行修改和扩展,编写对应的处理Core。
  • 用户选定的各种数据将传递给Core处理,Core将调用process进行具体处理。
  • Core的process函数接收函数地址,以及选定的真实基本块列表进行处理。
  • 目前仅编写了默认处理模块AngrCore,使用angr符号执行来获取基本块之间的关系,并进行Patch。
  • 采用了收集基本块代码,反编译后再重新编译的方式进行Patch,可能会导致一些不可控的问题。

注意事项

  • 默认模块AngrCore针对变种控制流平坦化效果较差,Patch出的代码容易出现问题,且条件跳转的条件可能会反转,因此不可运行。
  • 后续考虑实现更多的Cores(例如基于动调Trace的),但是Patch和判断条件识别依旧是一个问题。
  • 下一步(可能):考虑基于Angr的AIL实现真实基本块的识别,当然这个功能不包括在本插件中,但可用于生成blocks.json用于导入,配合本插件就不用繁琐的自己去寻找基本块了。

About

deflat plugins for ida pro


Languages

Language:Python 100.0%