介绍
Qiling Framework 基于Unicorn,能够在一个平台上模拟多个OS和架构的二进制文件,包括Linux、MacOS、Windows、FreeBSD、DOS、UEFI和MBR。它支持x86(16、32和64位)、ARM、ARM64和MIPS。因此,我们几乎不需要担心因为环境搭建困难及手头设备不足导致无法进行分析工作,尤其像基于ARM或MIPS的IoT固件,想要进行逆向分析和漏洞挖掘尤其不易。
在澪同学的文章用麒麟框架深入分析实模式二进制文件中提到了Qiling能够进行gdb远程调试,这实际上是我为Qiling所贡献的第一个功能。将调试能力赋予Qiling,我们就能够在完全可控的环境中对二进制文件进行动态分析,不必担心病毒样本对主机造成影响,能够绕过检测,甚至能够只执行其中的一部分。
但这样的调试还不够优雅,在这里我想要为大家介绍的是Qiling调试功能的全新模块:Qiling IDA插件。与当今最强大的反编译器结合,我们可以做很多很棒的事。不需要IDA remote server和虚拟机就能够轻松地在IDA上进行动态调试和反编译,实时查看寄存器,堆栈和内存,绘制代码的执行路径等。此外,结合自定义脚本,我们能够使用Qiling提供的全部功能。我们还有更高级的功能:自动分析并反ollvm控制流平坦化,这将在今后进行单独介绍。
文章同步发表于我的Blog
K's Housekabeor.cn安装
安装Qiling
Qiling的安装方式在这里,由于Qiling更新速度较快,想要获取最新版本请
git clone https://github.com/qilingframework/qiling/tree/dev
注意 请将Qiling安装在IDA所使用的Python3环境内。
安装插件
插件的安装方式有两种
- 作为一个IDA插件
只需要建立一个Qiling插件与IDA plugin目录的符号链接。
# Linux ln -s /absolute/path/to/qiling/extensions/idaplugin/qilingida.py /path/to/your/ida/plugins/
# Macos ln -s /absolute/path/to/qiling/extensions/idaplugin/qilingida.py /Applications//ida.app/Contents/MacOS/plugins/
# Windows mklink C:absolutepathtoIDApluginsqilingida.py D:absolutepathtoqilingextensionsidapluginqilingida.py
IDA在启动时会自动加载Qiling插件。
- 作为一个脚本文件
运行IDA,点击File/Script file...
,定位插件所在位置(也可以在此处下载最新版本),选择qilingida.py即可。
加载脚本后可以在Edit->Plugins->Qiling Emulator
和右键菜单找到按钮。
插件的具体用法请访问
IDAPro Plugin - Qiling Framework Documentationdocs.qiling.io