Mah*_*hdi 5 java android frida
我正在尝试使用 Frida 绕过 Android 应用程序中的 rootDetection。
我找到了检查设备是否已root的类和方法,并尝试更改此方法的返回值,但我收到了一个令人困惑的错误:
错误: isDeviceRooted 的实现预期返回值与 java.lang.Boolean 兼容
我的脚本很简单:
var hook = Java.use("app.name.someClasses.RootUtils");
hook.isDeviceRooted.overload().implementation = function() {
return false;
}
Run Code Online (Sandbox Code Playgroud)
我尝试谷歌搜索,但我不明白 Boolean(false) 和 false 之间有什么区别,它只是一个包装器,说真的,我应该在这里返回什么才能与 main 方法返回值兼容?
如果你只是返回true
或者false
这是原始类型boolean
。现代 Java 编译器会自动在boolean
和 之间进行转换java.lang.Boolean
,但 Frida 不会。
因此,您必须创建一个java.lang.Boolean
实例并返回它:
var hook = Java.use("app.name.someClasses.RootUtils");
hook.isDeviceRooted.overload().implementation = function() {
return Java.use("java.lang.Boolean").$new(false);
}
Run Code Online (Sandbox Code Playgroud)