0%

Frida在无Root机器上的使用方案 (基于VirtualApp)

概述

大多数国产手机厂商出于安全考虑,禁止用户解锁BootLoader,因此也就无法通过Magisk获取Root权限。
本文基于VirtualApp框架Frida-Gadget,实现不修改apk使用Frida。

方案

修改框架源码

阅读VirtualApp源码可知,在lib/src/main/jni/Foundation/IOUniformer.cpp中hook了dlopen,并实现了onSoLoaded函数,可在该函数中通过传入的filename获取加载的动态库路径。

由此,可以在libart.so加载后,手动调用dlopen加载Frida-Gadget(将arm版本的so文件及配置文件添加到lib\src\main\jniLibs\armeabi-v7a)。

编写Xposed模块

除了修改源码,也可以自己编写一个Xposed模块,实现Frida-Gadget的加载。

hook ContextWrapper.attachBaseContext函数,在其执行后,手动调用System.load加载Frida-Gadget(需手动拷贝相关文件到应用的libs文件夹)。