关于 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 即可。