function getWua() {
let result = ""
Java.perform(() => {
var current_application = Java.use('android.app.ActivityThread').currentApplication();
var context = current_application.getApplicationContext();
let GdmSecurityGuardUtil = Java.use("com.alibaba.aliexpress.gundam.ocean.GdmSecurityGuardUtil");
result = GdmSecurityGuardUtil["h"](context)
})
return result
}
var JNICLibrary = Java.use('com.taobao.wireless.security.adapter.JNICLibrary.doCommandNative');
JNICLibrary.doCommandNative.implementation = () => {
}
但是发现他居然报这个错:java.lang.ClassNotFoundException
这个原因我分析是因为这个函数使用的不是当前的 classLoader, 所以找不到,所以他肯定是在其他的 so 文件里面,那么我们应该怎么找到这个 so 文件呢?可以使用一下思路:
遍历所有的方法,输出包含特征值的 ClassLoader
const groups = Java.enumerateMethods('*JNICLibrary*!doCommandNative*')
for (let index = 0; index < groups.length; index++) {
const element = groups[index];
console.log("loader=> ", element.loader.toString())
}
function getWuaJni() {
var ret = ""
Java.perform(() => {
var JNICLibrary = Java.use('com.taobao.wireless.security.adapter.JNICLibrary');
let String = Java.use("java.lang.String")
let Integer = Java.use("java.lang.Integer")
let a = 20102
let b = Java.array("Ljava.lang.Object;", [String.$new(),String.$new(), Integer.$new(8), String.$new(), String.$new(), Integer.$new(0)]);
ret = JNICLibrary.doCommandNative(a, b)
})
return ret.toString()
}