Unicorn简单学习使用记录
0x00 介绍
Unicorn是一个轻量级, 多平台, 多架构的CPU模拟器框架,基于qemu开发,它可以代替CPU模拟代码的执行,常用于恶意代码分析,Fuzz等。
0x01 安装
官网有编译好不同平台的二进制包,直接安装就行。但是看了一下时间2017年的,qemu已经升级好几个版本了。api也比较老旧。
去github看了一下是否有在更新,发现一直有在更新,不过好像也没更新啥,只是修复一些bug,下载git源码,自己编译。目前最新1.0.2rc
1 2 3 4 5 6 7 8 9
git clone https://github.com/unicorn-engine/unicorn.git cd unicorn # UNICORN_ARCHS="arm aarch64 x86" ./make.sh # 设置要编译的架构 可选 默认6种全编译 (Arm, Arm64, M68K, Mips, Sparc, & X86) ./make.sh sudo ./make.sh install # python 绑定 cd bindings/python sudo python3 setup.py install
还有更多交叉编译选项参考 文档
0x02 简单使用
C :
|
|
官方给了很多测试案例
python3:
|
|
0x03 一些基于unicorn的项目简单使用
AndroidNativeEmu
AndroidNativeEmu 让你能够跨平台模拟Android Native库函数,比如JNI_OnLoad、Java_XXX_XX等函数
这是看雪无名侠大佬二次修改一个版本,真的太强了。
安装报错解决
安装有些坑。。
首先要求使用python3.7。之后
1 2 3 4
git https://github.com/AeonLucid/AndroidNativeEmu.git pip install -r requirements.txt cd samples # 运行python example.py开始报错。。
在win上先搞定
keystone-engine
1
git clone https://github.com/keystone-engine/keystonecd keystone/bindings/pythonpython setup.py install
下载
Windows - Core engine
x64解压找到
keystone.dll
放到X:\location_to_python\Lib\site-packages\keystone\
还有可能报
fail to load the dynamic library.
下载 vcredist_x64 安装。
之后直接
python example.py
继续报ModuleNotFoundError: No module named 'androidemu'
加入代码
1 2
import sys sys.path.append('../')
又报
FileNotFoundError: [Errno 2] No such file or directory: 'samples/example_binaries/libc.so'
删掉代码里的
samples/example_binaries/libc.so
的samples/
能跑起来但是报错
unicorn.unicorn.UcError: Invalid instruction (UC_ERR_INSN_INVALID)
改成
emulator.load_library("example_binaries/libc.so", do_init=False)
就成功运行
使用
|
|
- samples 文件夹下几个具体的实例
unicorefuzz
合并到AFL系列总结
参考
中文文档https://github.com/kabeor/Micro-Unicorn-Engine-API-Documentation
https://app.yinxiang.com/fx/a6cc6633-a93f-4111-a06a-cccd5fa39e0f