使用 Frida 无法 hook 到动态加载的 java 类方法
一些非常规开发的安卓APP,通常一些经常变动的功能是通过动态加载dex来实现的,这时候如果想要了解某些运行逻辑,就需要通过如下的办法hook动态加载的类
Java.perform(function () {
Java.enumerateClassLoaders({
onMatch: function (loader) {
try {
var bFind = loader.findClass(class_name)
console.log('find result:' + bFind)
if (bFind) {
Java.classFactory.loader = loader
}
} catch (error) {
}
}, onComplete: function () {
console.log("onComplete")
}
});
});
有时候会发现明明内存里面加载了某个class,但是hook不上,这时候需要查看所有加载到内存中的dex,看是否出现了一个dex多次加载,或者相同类加载了多个dex,确定好对应的 loader,就能解决问题了。