首頁(yè)
社區(qū)
課程
招聘
Frida如何在內(nèi)部類中獲得外部類對(duì)象(如MainActivity.this)

比如有一個(gè)Android常見的語(yǔ)法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class MainActivity extends AppCompatActivity{
    private void test(){
        Log.e("Test","Frida OuterClass");
    }
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        this.findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                  MainActivity.this.test();
             }
        });
    }

現(xiàn)在想要通過Frida,hook匿名內(nèi)部類(實(shí)質(zhì)上是內(nèi)部類)的onClick的方法,我嘗試了如下的錯(cuò)誤方式并不能成功,所以請(qǐng)教一下,如何獲取上面代碼中的MainActivity.this對(duì)象,并調(diào)用test方法呢?(請(qǐng)寫出JS方法)

1
2
3
4
Java.use('com.example.app.MainActivity$a').onClick.implementation = function(){
    //如下方法是我在測(cè)試的時(shí)候嘗試的錯(cuò)誤方法
    Java.use('com.example.app.MainActivity').this.test();
}

附:我還做過一些嘗試,通過Java.choose搜索堆中存在的MainActivity對(duì)象,然后再調(diào)用test方法,但是不知道為什么使用Java.choose方法一調(diào)用,APP就會(huì)閃退(這種情況只會(huì)出現(xiàn)在比較大的APP中),希望有大佬能順便指點(diǎn)一下,萬(wàn)分感謝!

收藏
3條回答
wx_Sambty 2021-10-5

我想通了家人們.
剛剛我去翻了一下反編譯后的smali代碼,發(fā)現(xiàn)了內(nèi)部類MainActivity$a中存在一個(gè)屬性c2(具體名稱得翻smali代碼,可能每個(gè)都不一樣),結(jié)合Java虛擬機(jī)的知識(shí),這應(yīng)該就是內(nèi)部類中指向外部類的指針.
于是Frida腳本出來了

1
2
3
4
5
6
Java.use('com.example.app.MainActivity$a').onClick.implementation = function(){
    //如下方法是我在測(cè)試的時(shí)候嘗試的錯(cuò)誤方法
    Java.use('com.example.app.MainActivity').this.test();
    //如下方法是有效的
    this.c2.value.test();
}
回復(fù)
wx_YwY 2021-10-27 2021-10-27編輯
1
2
3
4
5
6
7
8
Java.perform(function () {
    my_main_activity = Java.use("com.example.app.MainActivity$a");
    my_main_activity. onClick.overload().implementation = function () {
        Java.use('com.example.app.MainActivity').test()
res = this.onClick();
return res
    }
});
回復(fù)
kkandy 2023-9-12

內(nèi)部類只要不是靜態(tài),肯定有外部類的指針(對(duì)象)參數(shù)的

回復(fù)
Frida Android
  參與學(xué)習(xí)     人
  提問次數(shù)     100 個(gè)
0
我的提問
0
我的回答
0
學(xué)習(xí)收益