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);
                        }
                    });
        }


これは、匿名クラス オブジェクトを新規作成し、このオブジェクトの onReceiveValue メソッドをフックして、その html 引数を取得する私の frida JavaScript コードです。しかし、私はそれをコーディングする方法がわかりません。誰でも私を助けることができますか、前もって感謝します。

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