Frida钩子重写匿名类的方法?

时间:2019-08-26 12:19:19

标签: java python android frida

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参数

1 个答案:

答案 0 :(得分:0)

匿名内部类使用以下方案获取生成的类名称:

for c=1:C
    dummy_u = reshape(u(c,:,:),[T+1 W]) ;
    dummy_B = reshape(B(c,:,:),[T+1 W]) ;

    dummy_i = nan(size(dummy_u)) ;  % Start with all nan values
    [dum_row, ~] = find(dummy_u);  % Get row indices of non-zero values
    dummy_i(dummy_u ~= 0) = dum_row;     % Place row indices in locations of non-zero values
    dummy_i = cummin(dummy_i, 1, 'reverse');  % Column-wise cumulative minimum, starting from bottomi
    dum_i = dummy_i+(T+1).*repmat(0:(W-1), T+1, 1);  % Create linear index
    dummy_benefit = dummy_B(dum_i)./dummy_u(dum_i);
    i(c,:,:)       = dummy_i ;
    benefit(c,:,:) = dummy_benefit ;
    clear dum_i dum_row dummy_i dummy_benefit
end

数字从1开始,对于每个匿名内部类,数字仅增加1。

因此,在您的情况下,最有可能是<outer class name>$<number>

似乎您正在练习使用Frida,因为通常您没有应用程序的源代码。 因此,常见的方法是使用已编译的APK文件,然后使用例如com.test.testapplication.TXOut.TXIn$1。在生成的smali源代码中,您可以轻松识别所需的内部类,只需将apktool替换为/,即可将smali类名转换回常规Java类名。