【问题标题】:How to hook into onClick method inside a method using frida如何在使用 frida 的方法中挂钩 onClick 方法
【发布时间】:2020-02-15 05:28:26
【问题描述】:

我想通过挂接 frida 来改变 onClick 方法的行为。 我使用的代码是

Java.perform(function() {
    console.log("[*] START...")
    var mClass = Java.use("sg.vantagepoint.uncrackable1.MainActivity")
    mClass.a.onClick.implementation=function() {
        console.log("[*] Clicked ")
    }
})

我遇到错误

TypeError: cannot write property 'implementation' of undefined
    at [anon] (../../../frida-gum/bindings/gumjs/duktape.c:57636)
    at /uncrackable1.js:6
    at frida/node_modules/frida-java-bridge/lib/vm.js:11
    at E (frida/node_modules/frida-java-bridge/index.js:346)
    at frida/node_modules/frida-java-bridge/index.js:298
    at frida/node_modules/frida-java-bridge/lib/vm.js:11
    at frida/node_modules/frida-java-bridge/index.js:278
    at /uncrackable1.js:11

源码是

    private void a(String str) {
        AlertDialog create = new AlertDialog.Builder(this).create();
        create.setTitle(str);
        create.setMessage("This is unacceptable. The app is now going to exit.");
        create.setButton(-3, "OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialogInterface, int i) {
                System.exit(0);
            }
        });

【问题讨论】:

    标签: android frida


    【解决方案1】:

    您正在尝试挂钩错误的类 - 很可能是因为您使用 Jadx 来反编译错误的设置并且不了解 Java 类。

    如果您使用 Jadx 来反编译 APK 文件,请确保禁用设置 内联匿名类 以查看真实的类名方法所属。

    方法onClick() 属于new DialogInterface.OnClickListener() 创建的匿名内部类,而不是sg.vantagepoint.uncrackable1.MainActivity - 因此您试图挂钩错误的类。它使用的方法a(String) 与挂钩完全无关。匿名内部类有自己的类名,基于外部类附加$ 和一个数字。 因此,正确的类名可能是sg.vantagepoint.uncrackable1.MainActivity$1sg.vantagepoint.uncrackable1.MainActivity$2,这取决于存在多少其他匿名内部类。

    另外,像mClass.a.onClick 这样的东西是不可能的,因为方法中没有方法(a 是一个方法,onClick 是一个方法)。

    最后你可能会得到以下 frida 代码:

    Java.perform(function() {
        console.log("[*] START...")
        var mClass = Java.use("sg.vantagepoint.uncrackable1.MainActivity$1")
        mClass.onClick.implementation=function() {
            console.log("[*] Clicked ")
        }
    })
    

    【讨论】:

      猜你喜欢
      • 2017-12-05
      • 2020-07-02
      • 1970-01-01
      • 2019-10-26
      • 2020-12-17
      • 2021-09-15
      • 1970-01-01
      • 2020-09-17
      • 2022-12-25
      相关资源
      最近更新 更多