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

本文主要是介绍逆向工程中不得不说的优秀开源引擎框架: Capstone, Keystone, Unicorn, Qemu 以及 QiLing 等工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

汇编与反汇编

Capstone

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

  • Capstone 反汇编引擎 官网
  • 项目主页:https://github.com/aquynh/capstone
  • 多平台 Windows、* nix
  • 多架构,例如 Arm、Mips 和 x86
  • 支持 C/Python 接口

Keystone

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

  • Capstone 汇编框架 官网
  • 项目主页:https://github.com/keystone-engine/keystone
  • 多平台:Windows、* nix
  • 多架构,例如 Arm、Mips 和 x86
  • 支持 C/Python 接口

二进制模拟执行

QEMU

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

  • QEMU 虚拟机 官网
  • 项目主页:https://github.com/qemu/qemu
  • 多平台:Windows、* nix
  • 多架构,例如 Arm、Mips 和 x86
  • 支持 C/Python 接口

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,他们具有更好的集成性和扩展性,这些工具大家可能更为熟悉,不再赘述。

这篇关于逆向工程中不得不说的优秀开源引擎框架: Capstone, Keystone, Unicorn, Qemu 以及 QiLing 等工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/634314

相关文章

基于Go语言实现一个压测工具

《基于Go语言实现一个压测工具》这篇文章主要为大家详细介绍了基于Go语言实现一个简单的压测工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理客户端模块Http客户端处理Grpc客户端处理Websocket客户端

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

基于C#实现PDF文件合并工具

《基于C#实现PDF文件合并工具》这篇文章主要为大家详细介绍了如何基于C#实现一个简单的PDF文件合并工具,文中的示例代码简洁易懂,有需要的小伙伴可以跟随小编一起学习一下... 界面主要用于发票PDF文件的合并。经常出差要报销的很有用。代码using System;using System.Col

redis-cli命令行工具的使用小结

《redis-cli命令行工具的使用小结》redis-cli是Redis的命令行客户端,支持多种参数用于连接、操作和管理Redis数据库,本文给大家介绍redis-cli命令行工具的使用小结,感兴趣的... 目录基本连接参数基本连接方式连接远程服务器带密码连接操作与格式参数-r参数重复执行命令-i参数指定命

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

使用Java编写一个文件批量重命名工具

《使用Java编写一个文件批量重命名工具》这篇文章主要为大家详细介绍了如何使用Java编写一个文件批量重命名工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景处理1. 文件夹检查与遍历2. 批量重命名3. 输出配置代码片段完整代码背景在开发移动应用时,UI设计通常会提供不