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,并配置build.gradleandroid.defaultConfig中的ndk.abiFilters

编写Xposed模块

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

hook ContextWrapper.attachBaseContext函数,在其执行后,调用System.loadSystem.loadLibrary加载Frida-Gadget

注意:如果hook系统应用(PLATFORM_APP),且未关闭SELinux,则无法从data目录下加载so文件。