逆向工程中不得不说的优秀开源引擎框架: Capstone, Keystone, Unicorn, Qemu 以及 QiLing 等工具

最近在研究一些用于进行逆向工程的框架:Chain of Fundamental Engines for Reverse Engineering: Capstone, Keystone, Unicorn, Qemu, Qiling。这些工具在某些场合中能够很好的帮助我们进行逆向工作。

汇编与反汇编

Capstone

新加坡南洋理工大学团队在 Blackhat USA 2014 上发布的一个反汇编引擎

Keystone

新加坡南洋理工大学团队在 Blackhat USA 2016 上发布的一个汇编框架

二进制模拟执行

QEMU

QEMU是一套由Fabrice Bellard所编写的模拟处理器的自由软件,一个通用的系统空间和用户空间仿真器和虚拟机

Unicorn

新加坡南洋理工大学团队在 Blackhat USA 2015 上发布的轻量级多平台,多体系结构的CPU仿真器框架

  • Unicorn 引擎 CPU仿真框架 官网
  • 项目主页:https://github.com/unicorn-engine/unicorn
  • 多平台:Windows、* nix
  • 多架构,例如 Arm、Mips 和 x86
  • 支持 C/Python 接口
  • 基于 QEMU

    QEMU 提供了一个完整的仿真环境,既可以模拟硬件外设、整个系统,也可以模拟单个二进制程序。而 Unicorn 专注于 CPU 指令的仿真。

QiLing

京东团队在 Defcon 2019 上发布的高级二进制仿真框架

  • Capstone 二进制仿真框架 官网
  • 项目主页:https://github.com/qilingframework/qiling
  • 多平台:Windows、* nix
  • 多架构,例如 Arm、Mips 和 x86
  • 基于 Unicorn

    Qiling 被设计为更高级别的框架,它利用 Unicorn 来模拟 CPU 指令,除此之外,还具有高级分析功能:执行动态检测,甚至可以在运行时热修补代码

总结

上述用于二进制逆向的开源工具,都提供了详细的使用方法,并且有团队一直在维护,对于研究二进制病毒、恶意样本分析大有裨益。例如,

  • 修改固件、二进制,增加或者修改其中的指令,可以使用 Capstone/Keystone 进行汇编指令与二进制的转换
  • 跨平台仿真一些架构的二进制可执行文件, 可以使用 QEMU
  • 二进制指令片段的模拟,可以使用 Unicorn、QiLing

笔者使用过其中的几个,且有想法去集成其中的一些功能,编写一个可视化工具。在这里只是进行简单的介绍,如果感兴趣,还是要实际操作一下。这些工具的官网都给出了使用教程,用起来还是比较简单的。

当然,如果是正常的渗透测试,漏洞挖掘,CTF,这些工具可能用到的场合还是比较受限,因为我们更常用的工具是 IDA、Ghidra、pwntools,他们具有更好的集成性和扩展性,这些工具大家可能更为熟悉,不再赘述。

猜你喜欢

转载自blog.csdn.net/song_lee/article/details/116541135