1

我要挂钩的 Java 代码

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() {
            int temp = 0;
            temp = temp + 3;
        }

        public void run() {}
    }
}

现在我想用Frida挂钩TXOut.TXIn.b,并在里面执行evaluateJavascript方法,这个方法需要一个回调方法来接收结果,所以我必须新建一个匿名类对象,我需要在Frida中这样做。

Frida 注入后,TXOut.TXIn.b应该是这样的

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

这是我的 frida javascript 代码
,我想新建一个匿名类对象,并挂钩该对象的 onReceiveValue 方法,并获取其 html 参数。但我不知道如何编码。任何人都可以帮助我,提前谢谢。

var TXOut_TXIn_class = Java.use('TXOut$TXIn');
var TXOut_TXIn_class_b = TXOut_TXIn_class.b.overload();
TXOut_TXIn_class_b.implementation = function () 
{
    var returnValue = TXOut_TXIn_class_b.apply(this, arguments);
    //new ValueCallback<String>() and hook onReceiveValue method and print html argument
    //Don't know how to write it here
    return returnValue;
}
4

0 回答 0