frida hook 類所有方法(ZenTracker)


frida hook 類所有方法(ZenTracker)

大家好,我是王鐵頭 一個乙方安全公司搬磚的菜雞
持續更新移動安全,iot安全,編譯原理相關原創視頻文章

今天分享的是frida hook 類的所有方法

視頻演示:
https://space.bilibili.com/430241559

應用場景

在逆向的時候 有時候想要知道一個類的方法啥時候被調用,假設我們要分析的類有10個方法,那么10個方法用frida一個一個寫hook方法也比較麻煩 這時候有三種方法

  1. 使用frida 寫個十幾行代碼
  2. 用Objection命令行工具 一行代碼
  3. 使用ZenTracker這個圖形化工具 點幾下完事

1 frida hook所有方法代碼

Java.perform(function(){
    //hook 類所有方法 
    var str_cls_name = "com.example.test_tracker.Test"; //類名

    //獲取類的所有方法
    var cls = Java.use(str_cls_name);
    var mhd_array = cls.class.getDeclaredMethods();

    //hook 類所有方法 (所有重載方法也要hook)
    for (var i = 0; i < mhd_array.length; i++) 
    {
        var mhd_cur = mhd_array[i]; //當前方法
        var str_mhd_name = mhd_cur.getName(); //當前方法名
        //console.log(str_mhd_name);

        //當前方法重載方法的個數
        var n_overload_cnt = cls[str_mhd_name].overloads.length;
        //console.log(n_overload_cnt);

        for (var index = 0; index < n_overload_cnt; index++) 
        {
            cls[str_mhd_name].overloads[index].implementation = function () 
            {
                //參數個數
                var n_arg_cnt = arguments.length;
                /*
                for (var idx_arg = 0; idx_arg < n_arg_cnt; n_arg_cnt++) 
                {
                    console.log(arguments[idx_arg]);   
                }
                */
                console.log(str_mhd_name + '--' + n_arg_cnt);
                return this[str_mhd_name].apply(this, arguments);
            }   
        }
    }
});

.

2 Objection命令 hook所有方法

//com.xx.xx 是你要hook的類
android hooking watch class com.xxx.xxx

.

3 ZenTracker圖形化工具 hook所有方法

雖然作者的原意並不是hook一個類的所有方法,但是工具這東西還是活學活用比較好。

項目地址

https://github.com/hluwa/ZenTracer

圖形界面

frida hook所有方法

可以看到效果還是比較直觀的

容易忘記的一點:

啟動frida_server
既然是一個封裝了frida的工具 那肯定手機要啟動frida-server才能工作

踩坑記錄

這里雖然工具確實比較好用,在很多文章里面大佬們確實也沒遇到什么問題 這里可能因為他們比較有錢用的是 Mac吧

我這種底層菜雞當然買不起Mac,只能用辣雞筆記本維持生活,用的也是windows系統, 所以這里就出了一些吊詭問題

1) 大坑 找不到設備

frida hook所有方法

這里 如果確定設備已經連接,解決方法:點擊stop。在我其中一台筆記本上面測試時,點擊stop后,成功附加進行了hook.當然正常情況點擊stop應該是退出

2) 大坑 絕對路徑的問題

frida hook所有方法

解決方法:ZenTracer.py第258行 手動修改路徑為絕對路徑

測試詳情

測試軟件界面

frida hook所有方法

測試軟件代碼

1.方法代碼
frida hook所有方法

2.調用代碼
frida hook所有方法

效果圖

點擊按鈕后的效果圖
frida hook所有方法

視頻演示:https://space.bilibili.com/430241559

相關代碼資料 關注公眾號 [移動安全王鐵頭] 回復關鍵字 frida 下載:

持續更新移動安全,iot安全,編譯原理相關原創視頻文章


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM