跨平台模拟执行 - AndroidNativeEmu 环境搭建

AndroidNativeEmu是基于Unicron实现的一个指令解析器, 让您能够跨平台模拟Android Native库函数,例如JNI_OnLoad,Java_XXX_XX等函数。

1. 简介

跨平台模拟执行工具 - AndroidNativeEmu ,参考:跨平台模拟执行 - AndroidNativeEmu实用手册

1.1 AndroidNativeEmu有什么用?

AndroidNativeEmu是基于Unicron实现的一个指令解析器, 让您能够跨平台模拟Android Native库函数,例如JNI_OnLoad,Java_XXX_XX等函数。

1.2 特性

  • 模拟 JNI Invocation API so JNI_OnLoad can be called properly.
  • 模拟 memory、malloc、memcpy
  • 支持拦截系统调用(SVC #0)
  • 通过符号Hook
  • 所有 JavaVM, JNIEnv 和 hooked functions 都可以用python来处理
  • 支持 VFP
  • 支持文件系统(也就是说你可以模拟maps、status等文件)

需要python 3.7,不过实测3.6也可以,一样不好搞。

github 地址:AeonLucid/AndroidNativeEmu

本文章在ubuntu 1804 下操作

2.安装 AndroidNativeEmu 所需要的依赖

依赖不多,unicorn 和 keystone 容易有坑

unicorn==1.0.1
pyelftools==0.24
hexdump==3.3
keystone-engine==0.9.1.post3
lushan@vm:~/Documents/AndroidNativeEmu$ sudo apt install build-essential cmake

更换pip源速度飞起的国内镜像

pip安装

python3 -m pip install unicorn==1.0.1
python3 -m pip install keystone-engine==0.9.1.post3
python3 -m pip install hexdump==3.3
python3 -m pip install pyelftools==0.24

权限问题可在命令后加--user解决,such as: python3 -m pip install pyelftools==0.24 --user

pip解决不了的,编译源码一把梭。

1.Ubuntu 编译安装 keystone-engine

$ git clone https://github.com/keystone-engine/keystone.git
$ cd keystone
$ mkdir build
$ cd build
$ ../make-share.sh
$ sudo make install
$ sudo ldconfig
$ cd ../bindings/python
$ sudo make install3 # or sudo make install for python2-bindings

2.unicorn 编译安装

/* install core */
sudo apt-get install libglib2.0-dev     # install the dependency
./make.sh; sudo ./make.sh               # compile & install the core

/* test core */
./samples/sample_all.sh

/* install python bindings */
cd bindings/python; sudo make install3

/* test python bindings */
./sample_x86.py

os:装依赖时的我,像走到一片沼泽地,到处都是坑

3. 配置 AndroidNativeEmu

  1. 把androidemu文件夹复制至sample文件夹下,
mv androidemu /sample/
  1. 删除example.py文件下的关于"samples/"的目录访问路径。

"samples/example_binaries/libc.so"

改为

"example_binaries/libc.so"

4. 执行

python3 example.py     

心力交瘁..

添加新评论

请不要水评论

评论列表