【发布时间】:2021-10-06 21:24:47
【问题描述】:
我正在尝试绕过使用 Frida 的 android 应用程序上的根检测机制,我尝试了很多不同的脚本(frida 代码共享)和不同的方法(如隐藏根),但没有成功!
所以我试图找到负责检查设备是否已root并更改其返回值的类和方法。
这是我的脚本:
setTimeout(function() { // avoid java.lang.ClassNotFoundException
Java.perform(function() {
var hook = Java.use("app.name.RootUtils");
console.log("info: hooking target class");
hook.isRooted.overload().implementation = function() {
console.log("info: entered target method");
return Java.use("java.lang.Boolean").$new(false);
}
});
},0);
如果我正常注入此代码,它将无法工作,因为看起来 isRooted 方法会在它之前被调用
如果我使用 spawn 运行应用程序并更改此方法返回值,它会失败并出现错误:
frida.core.RPCException:错误:java.lang.ClassNotFoundException:找不到类...
我也尝试过生成应用程序,然后使用反对来运行“android root disable”,但它会返回此错误:
frida.core.RPCException: TypeError: cannot read property 'getApplicationContext' of null 在 getApplicationContext (src/android/lib/libjava.ts:21)
我不确定这是 Frida 或我的系统的问题还是...
我想如果我能够让我的主代码在类被加载之后运行(比如使用循环检查或使用钩子)问题就会得到解决,但我不知道如何编写那种frida 的 js 代码。
我在 macOS 11.5.1 上使用 python 3.9 并安装了最新版本的 frida 和 objection
我已经在一部带有 android 10 的 root 手机和带有 android 6 的模拟器上进行了测试
【问题讨论】:
标签: javascript java android frida