使用 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,就能解决问题了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

 桂ICP备15001694号-3