使用frida和java脚本hook受保护的APK遇到attach()错误

Using frida and java script to hook protected APK encountered attach( ) error

我使用以下 java 脚本在 frida (windows 7) 中学习挂钩。

Java.perform(function () { 
            console.log("prepare hook...");
            var application = Java.use("android.app.Application");
            console.log("get application...");
            application.attach.overload("android.app.Context").implementation = function(Context){
                console.log("get context...");
                var classloader = Context.getClassLoader();
                Java.classFactory.loader = classloader;
                console.log("get classloader");
            }
        });

我想在本练习中做的是获取受保护 APK 的 class 加载程序。在 frida -R -f com.xxxx.xxx -l myjs1.js 中,弹出 attach( ) 参数类型错误:

我的 java 脚本有什么问题以及如何修复它?非常感谢。

您正在尝试挂钩一个不存在的方法。

您尝试挂钩的内容:

android.app.Application.attach(android.app.Context)

此 class 中唯一的 attach 方法具有签名

android.app.Application.attach(android.content.Context)

查看源代码:https://github.com/aosp-mirror/platform_frameworks_base/blob/master/core/java/android/app/Application.java#L350

如果您正在尝试使用 Context 进行访问,这里是使其有效的替代方法

Java.perform(function () { 
    var context = Java.use('android.app.ActivityThread').currentApplication().getApplicationContext();

    console.log("get context...");
    var classloader = context.getClassLoader();
    Java.classFactory.loader = classloader;
    console.log("get classloader");

});

只需删除应用程序实现。