https://github.com/zhkl0228/unidbg
这个项目是凯神的开源项目,用这个项目可以帮助你在脱离手机的情况下以Unidbg
为中心去做模拟执行/ so 算法还原
引自龙哥的《当我们谈论 Unidbg 时我们在谈什么》
“Unidbg并不是过往某个工具的替代品,而是IDA、Frida以及其工具套件的互补品。它和过去的工具结合在一起可以实现 1+1>2 的效果
现在应该是爬虫开发者最好的时代,各类文章/工具层出不穷,针对各类加密的文章只要掌握搜索技巧通过免费的文章也可学到很多
这里我们使用的就是肉丝姐发布的r0env
帮助我们一键搭建安卓逆向的 PC 虚拟机环境
“r0env:打造年轻人的第一套安卓逆向环境!之完整使用手册 https://www.bilibili.com/s/video/BV1qQ4y1R7wW
整好环境之后,下载 unidbg 到本地
git clone https://github.com/zhkl0228/unidbg.git
PS:如果你不是使用 r0env ,那么需要保证本地已经配置好了 Java开发环境
可以在命令行下使用java -version
测试
不会安装的可以参考下面的文章,配置 java 开发环境
https://blog.csdn.net/qq_44895681/article/details/108257813
完成了环境配置后,使用IDEA
打开项目。
打开项目后需要等待一段时间,IDEA 会自动下载项目所需要的依赖包,只要耐心等待就可以了。
等待项目依赖下载完成,按照以下目录打开项目的路径
unidbg-master\unidbg-android\src\test\java\com\kanxue\test2
这个项目是由项目开发者内置在开源项目中供我们测试用的。
这个时候如果项目环境正常,我们在MainActivity
中右键运行项目
可以得出如下结果
出现如上的结果说明我们的环境就没有问题了。
接下来我们来粗略的看看MainActivity
里都做了什么
// 创建模拟器实例, 进程名建议依照实际进程名填写,可以规避针对进程名的校验
emulator = AndroidEmulatorBuilder.for32Bit().addBackendFactory(new DynarmicFactory(true)).build();
// 获取模拟器的内存操作接口
Memory memory = emulator.getMemory();
// 设置系统类库解析
LibraryResolver resolver = new AndroidResolver(23);
// 创建Android虚拟机
vm = emulator.createDalvikVM();
// 可以在这一步传入APK,Unidbg可以替我们做部分签名校验的工作
vm = emulator.createDalvikVM(new File("unidbg-android\\src\\xxxxxx\\xxx.apk "));
vm.setJni(this); // 设置JNI
vm.setVerbose(true); // 打印日志
// 加载目标SO
DalvikModule dm = vm.loadLibrary(new File("unidbg-android\\src\\test\\xxxxx\\libxxx.so"), true);
//获取本SO模块的句柄,后续需要用它
module = dm.getModule();
dm.callJNI_OnLoad(emulator); // 调用JNI OnLoad
以上就是关于 unidbg 基础环境搭建的全部内容了