匿名class的Frida钩子覆盖方法?

Frida hook override method of anonymous class?

package com.test.testapplication;

import android.content.Context;
import android.webkit.ValueCallback;
import android.webkit.WebView;

public abstract class TXOut extends WebView {
    public TXOut(Context context) {
        super(context);
    }

    private class TXIn implements Runnable {
        String a;
        ValueCallback b;

        TXIn(String str) {
            this.a = str;
        }

        private void b() {
            TXOut.this.evaluateJavascript(
                    "(function() { return ('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>'); })();",
                    new ValueCallback<String>() {
                        @Override
                        public void onReceiveValue(String html) {
                            // code here
                        }
                    });
        }

        public void run() {}
    }
}

如何使用 frida 挂钩 TXOut ---> TXIn ---> b ---> new ValueCallback() ---> onReceiveValue

我想获取此方法的 html 参数

匿名内部 classes 正在使用以下方案获取生成的 class 名称:

<outer class name>$<number>

其中数字从 1 开始,对于每个匿名内部 class 它只增加 1。

因此在您的情况下很可能是 com.test.testapplication.TXOut.TXIn

你好像在练习使用 Frida,因为你通常没有应用程序的源代码。 因此,常见的方法是使用已编译的 APK 文件并使用例如反编译它。 apktool or Jadx.

在生成的 smali 源中使用 apktool,您可以轻松识别您正在寻找的内部 class 您只需将 / 替换为 . 即可转换 smali [=28] =] 名称恢复为常规 Java class 名称。

在 Jadx 中,原来的 class 名称添加为注释。