基于 unicorn 的 IDA 轻量级插件 uEmu 模拟执行汇编代码

关于 unicorn engine 的相关知识以及开发,可访问笔者之前所写的博客

0x10 uEmu 简介

uEmu 是一个小巧智能的 IDA 模拟器插件,基于unicorn engine,支持以下几种架构开箱即用

  • x86 (x86-64)
  • ARM (ARM 64)
  • MIPS (MIPS 64)

Please welcome: Tiny cute emulator plugin for IDA based on @unicorn_engine
Supports x86/x64/ARM/ARM64https://t.co/0dJC4foWkK pic.twitter.com/UHKDBKC4MX 1

— Alex Hude (@getorix) August 8, 2017

在这里插入图片描述

uEmu 模拟裸机代码(不需要任何操作系统支持的底层代码)的执行,比如启动引导、嵌入式固件等;也可以模拟单一函数的执行。使用 uEmu 的目的是

  • 模拟复杂的内核代码,如动态链接库和进程
  • 模拟复杂的系统调用

uEmu 项目地址:https://github.com/alexhude/uEmu 2


0x20 使用方式

1.安装 unicorn 的 python 版本

pip install unicorn -i https://pypi.mirrors.ustc.edu.cn/simple/

2.将uEmu下载下来,使用 File/Script file...ALT+F7 在IDA中加载uEmu.py

如果这里提示 IDA 弹出窗口,还没有 unicorn 包,这多半是因为 Windows 安装了多个版本的 python,而 IDA 加载的 python 版本跟系统环境变量设置的版本有所差别,我们根据 IDA 的 Output 窗口的提示信息,修改相应的环境变量,重新 pip 安装一下 unicorn 即可。

在这里插入图片描述
插件加载成功的截图如下
在这里插入图片描述
菜单选项

  • Start 映射所有段并设置Unicorn来初始化模拟器
  • Run 模拟指令,直到遇到断点或发生错误
  • Step 模拟一条或者 n 条指令(按住ALT/ OPTION指定一个数字)
  • Stop 终止模拟/仿真
  • Reset 重置 unicorn 引擎并取消映射的所有内存区域
  • Jump To PC 简单跳转到当前 PC
  • 可以手动或通过 JSON 文件更新 CPU(请参见下文)
  • Show Controls 显示 Start/Run/Step/Stop 按钮
  • Show CPU Context 显示寄存器
  • Show CPU Extended Context 显示扩展寄存器 (FP/SIMD)
  • Show Stack 显示当前栈
  • Show Memory Range 显示特定的内存区域

使用方式很简单,在 IDA 反汇编窗口,右击,选择 uEmu 即可。


  1. https://firmwaresecurity.com/2017/08/08/uemu-unicorn-based-emulator-plugin-for-ida/ ↩︎

  2. https://github.com/alexhude/uEmu ↩︎

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江下枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值