1.unicorn介绍
好比是一个CPU,可以模拟执行各种指令
提供了很多编程语言接口,可以操作内存、寄存器等
但它不是一个系统,内存管理、文件管理、系统调用等都需要自己来实现
2.基于unicorn开发的框架
cemu用来学习汇编的工具
AndroidNativeEmu Python开发
unidbgJava开发
3.unidbg
支持模拟JNI调用
支持模拟系统调用指令
支持ARM32和ARM64
支持Hookzz、Dobby、xHook、原生unicornHook等Hook方式
支持Android、iOS
好比是在CPU上搭建了一个系统,因此可以很方便地在PC端模拟运行SO
学习成本较低,不需要复现so算法,补环境后直接运行即可
4.unidbg项目地址
https://github.com/zhkl0228/unidbg
5.导入工程
从GitHub下载项目,解压后,使用IDEA打开
6.工程结构
unidbg-master -> unidbg-android -> src
main 工程源码
test 测试案例
java 源码
resources 资源
7.等待初始化
第一次打开等待下载依赖完成
8.初始化完成后测试运行就报错: java: 错误: 不支持发行版本 7
当前下的这个 unidbg-0.9.7 好像默认的是 java 1.7,(在全局的pom.xml中),我没有java 1.7,用的21然后报错了,
gpt说**在 Maven 项目中, `3.3` 是 Maven Compiler Plugin 的版本, `1.7` 是 Java 版本**
那我将项目结构用 1.8,将**全局的pom.xml**改成 1.8,然后 pom.xml 右上角会提示重新加载,点一下重载后就没这个报错了。
但是之后我为了验证,将这里重新从1.8 改为 1.7 运行也不报错了,那就不管了。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
测试运行项目有没有问题, 运行 -->
根目录下的 unidbg-android/ src/ test/ java/ com/ bytedance.../ TTEncrypt