首页 > 其他分享 >基于QEMU的Unicorn Engine模拟器

基于QEMU的Unicorn Engine模拟器

时间:2022-10-27 14:44:15浏览次数:96  
标签:Engine Qiling Qemu Unicorn QEMU CPU 模拟 模拟器

 

https://github.com/unicorn-engine/unicorn

 

什么是Unicorn引擎

Unicorn是一个轻量级, 多平台, 多架构的CPU模拟器框架. 我们可以更好地关注CPU操作, 忽略机器设备的差异. 想象一下, 我们可以将其应用于这些情景: 比如我们单纯只是需要模拟代码的执行而非需要一个真的CPU去完成那些操作, 又或者想要更安全地分析恶意代码, 检测病毒特征, 或者想要在逆向过程中验证某些代码的含义. 使用CPU模拟器可以很好地帮助我们提供便捷.

 

它的亮点(这也归功于Unicorn是基于qemu而开发的)有:

  • 支持多种架构: Arm, Arm64 (Armv8), M68K, Mips, Sparc, & X86 (include X86_64).
  • 对Windows和*nix系统(已确认包含Mac OSX, Linux, *BSD & Solaris)的原生支持
  • 具有平台独立且简洁易于使用的API
  • 使用JIT编译技术, 性能表现优异

你可以在Black Hat USA 2015获悉有关Unicorn引擎的更多技术细节. Github项目主页: unicorn

 

尽管它不同寻常, 但它无法模拟整个程序或系统, 也不支持系统调用. 你需要手动映射内存并写入数据进去, 随后你才能从指定地址开始模拟.

应用的情景

什么时候能够用到Unicorn引擎呢?

  • 你可以调用恶意软件中一些有趣的函数, 而不用创建一个有害的进程.
  • 用于CTF竞赛
  • 用于模糊测试
  • 用于gdb插件, 基于代码模拟执行的插件
  • 模拟执行一些混淆代码

 

Unicorn Engine

pypi downloads Fuzzing Status

Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework, based on QEMU.

Unicorn offers some unparalleled features:

  • Multi-architecture: ARM, ARM64 (ARMv8), M68K, MIPS, PowerPC, RISCV, SPARC, S390X, TriCore and X86 (16, 32, 64-bit)
  • Clean/simple/lightweight/intuitive architecture-neutral API
  • Implemented in pure C language, with bindings for Crystal, Clojure, Visual Basic, Perl, Rust, Ruby, Python, Java, .NET, Go, Delphi/Free Pascal, Haskell, Pharo, and Lua.
  • Native support for Windows & *nix (with Mac OSX, Linux, Android, *BSD & Solaris confirmed)
  • High performance via Just-In-Time compilation
  • Support for fine-grained instrumentation at various levels
  • Thread-safety by design
  • Distributed under free software license GPLv2

Further information is available at http://www.unicorn-engine.org

 

 

https://github.com/qilingframework/qiling

Qiling是一款功能强大的高级代码模拟框架,该工具由Unicorn引擎驱动,并且拥有下列功能:

1、跨平台支持:Windows、macOS、Linux、BSD;

2、跨架构支持:x86、x86_64、ARM、ARM64等等;

3、多文件结构支持:PE、MachO、ELF;

4、在隔离环境中模拟&沙盒系统代码;

5、提供高级API来安装和配置沙盒环境;

6、细粒度显示:允许设置多种级别的钩子(instruction/basic-block/memory-access/exception/syscall/IO等等);

7、允许动态修补运行中的程序代码,包括已加载的库;

8、Python框架支持,允许构建和定制安全分析工具;

Qiling与其他模拟器对比

目前,社区有很多开源的模拟器,最接近Qiling的就是Unicorn和Qemu了。

Qiling vs Unicorn引擎

虽然Qiling 时基于Unicorn实现的,但是它们两个完全不同:

1、Unicorn只是一个CPU模拟器,它主要针对的是模拟CPU指令。Unicorn无法识别高级概念,例如动态库、系统调用、I/O处理或类似PE、MachO或ELF这样的可执行文件格式。因此,Unicorn只能够模拟原始设备指令,无法适用于操作系统上下文场景。

2、Qiling是一个高级框架,它可以利用Unicorn来模拟CPU指令,但是它同样可以理解操作系统上下文,它集成了可执行文件格式加载器、动态链接、系统调用和I/O处理器。更重要的是,Qiling可以在不需要原生操作系统的环境下运行可执行文件源码。

Qiling vs Qemu用户模式

Qemu用户模式跟我们的Qiling类似,它可以跨架构模拟整个可执行文件的源码。但是,Qiling的不同之处在于:

1、Qiling是一个真正的分析框架,它允许我们构建自己的动态分析工具(使用Python)。除此之外,Qemu只是一款工具,而不是一个框架。

2、Qiling可以执行动态指令,并且能够在运行时进行代码修补,这一点Qemu就无法做到了。

3、Qiling支持跨平台,但是Qemu用户模式只能在与源代码环境相同的操作系统上使用。

4、Qiling支持更多的平台,包括Windows、macOS、Linux&BSD,但Qemu用户模式只支持Linux&BSD。

 

标签:Engine,Qiling,Qemu,Unicorn,QEMU,CPU,模拟,模拟器
From: https://www.cnblogs.com/sinferwu/p/16832189.html

相关文章

  • 编译TDengineGUI 记录
    下载TDengineGUI代码,执行命令:gitclonehttps://github.com/skye0207/TDengineGUI.git安装依赖(直接npminstall失败,参考以下步骤可构建成功)--替换阿里源n......
  • C# RulesEngine 规则引擎:从入门到看懵
    说明RulesEngine是C#写的一个规则引擎类库,读者可以从这些地方了解它:仓库地址:https://github.com/microsoft/RulesEngine使用方法:https://microsoft.github.io/Rule......
  • 【ManageEngine】IT服务管理(ITSM)指南
    IT服务管理(ITSM)是什么IT服务管理(ITservicemanagement简写ITSM)是IT团队向其最终用户提供:设计、交付、管理和改善等所有IT服务的过程。ITSM致力于使IT流程和服务与业务目......
  • ArcEngine+WPF开发踩过的坑
    最近开始弄WPF下的arcengine开发,说实话,很多坑,每次遇到的奇葩问题会在这个随笔下记录:1、地图不刷新 问题:调用ActiveView.PartialRefresh()后地图不刷新???解决方案......
  • 「经验汇总」基于TDengine的时序数据解决方案
    为实现发电、输电、变电、配电、用电的实时智能联动,电力行业开始在传统业务之上构建信息网络、通讯网络、能源网络,运用云计算、物联网等新兴技术,大力发展数字化、信息化、......
  • gunicorn 部署flask项目
    1、简介  flask自带的web服务器可用于开发环境运行调试,不适合部署在生产环境,无法满足线上的性能要求。当使用app.run(host='0.0.0.0',port=6000)启动时,flask框架会有......
  • ParserWarning: Falling back to the 'python' engine because the 'c' engine does n
    Python3.9.10,Window64bit   警告:ParserWarning:Fallingbacktothe'python'enginebecausethe'c'enginedoesnotsupportregexseparators(separators......
  • gin框架(3)- Engine与Context
    前言在上一章,我们讲述了request请求是如何在gin中流转的,其中提到了两个比较重要的结构体Engine和Context。Engine在gin中充当server的角色,Context则负责对request的封装(类......
  • QEMU/KVM磁盘在线备份
    QEMU/KVM磁盘的在线完整及增量备份,是“打包”方案的一种具体实现,可实现基于时间点的备份,同时支持本地与远程2种备份方式,并可指定备份文件进行恢复QEMU/KVM磁盘的在线......
  • QEMU 仿真模拟 STM32 最小开发板 STM32F103
    软件介绍QEMU是一款开源虚拟机,可以用来模拟各种系统开发板,当然也可以用来模拟stm32的开发板QEMU官方说明文档在此https://www.qemu.org/docs/master/system/ar......