概述
大多数国产手机厂商出于安全考虑,禁止用户解锁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
,并配置build.gradle
的android.defaultConfig
中的ndk.abiFilters
编写Xposed模块
除了修改源码,也可以自己编写一个Xposed模块,实现Frida-Gadget
的加载。
hook ContextWrapper.attachBaseContext
函数,在其执行后,调用System.load
或System.loadLibrary
加载Frida-Gadget
。
注意:如果hook系统应用(PLATFORM_APP
),且未关闭SELinux
,则无法从data
目录下加载so文件。