一、目标
Unicorn 是一款非常优秀的跨平台模拟执行框架,该框架可以跨平台执行多种指令集的原生程序。本文介绍如何用Unicorn来执行Android原生的so
二、分析
- 先用Android NDK来编译一个so
- ida分析
三、代码
我们先用Android NDK 来编译一个so
编译之后, 输入4, 返回值是 24。
编译之后的so有arm64-v8a,armeabi-v7a, x86 ,x86_64等平台,我们这里选用armeabi-v7a来执行,用ida打开生成baseso,可以看出这次生成的fac函数在偏移0x674处。
现在我们用unicorn载入baseso,unicorn支持c++,python,go等多种语言,本文使用python
执行python runmu.py , 结果 rc = 24。
本文代码下载
http://d.91fans.com.cn/unicornone.zip