使用 Frida 來 Hook Java 類中的構造函數(構造函數帶重載),獲取解密后的js腳本


    一個APP使用了Auto.js 的加密腳本。我們的任務是將其加密腳本進行解密並dump出來。在  https://www.52pojie.cn/thread-1112407-1-1.html 一文中,介紹了 Auto.js 腳本解密的過程,並使用了 Xposed 對解密后的腳本進行了提取。但當前所使用的手機並沒有 Xposed , 只好通過 Frida 來自力更生進行提取。

  話不多說,通過 jadx 找到該 APK 涉及腳本加解密的地址:

如圖所示,根據上面鏈接的內容來看,我們要對  com.stardust.autojs.script.StringScriptSource 類的 StringScriptSource(String str, String str2) 構造函數進行 hook 。

一般來講,Frida Hook Java類中的方法,其注入的 JS 腳本是這樣的:

//Java.Perform 表示 Frida 將會從這里開始執行JavaScript腳本。
Java.perform(function () { //定義一個變量ClassName,Java.use 后面指定想要Hook的類SecondActivity
    var ClassName=Java.use('com.example.SecondActivity'); //hook該類下的myFunc1方法,implementation 表示重新實現它
    MainActivity.myFunc1.implementation = function () { send("Hook Start..."); //調用SecondActivity類中的 calc()方法,獲取返回值
        var returnValue = this.calc(); } });

然而由圖可知,我要hook的是構造函數,而且有兩個 str 參數,還有重載,所以並不能按上面的這么寫。在參考了關於Frida Hook Java 的資料  https://www.jianshu.com/p/f98aca8f3c05 和 https://www.freebuf.com/articles/system/190565.html 后,解決了 “  帶兩個參數,重載,string參數 ” 這三個問題。 代碼如下:

//把 data 的內容 寫入到 full_path 這一文件中 
function write_file(full_path, data) { 
    var f = new File(full_path, 'w')
    f.write(data)
    f.close()
}


Java.perform(function () {
    var ClassName = Java.use('com.stardust.autojs.script.StringScriptSource');
    console.log("Find ClassName Successfully!");//定位類成功!
    ClassName.$init.overload("java.lang.String","java.lang.String").implementation=function(param_1,param_2){
        send("Hook Start...");
        //send(param_1);//第一個參數是待解密的文件名,字符串“main.js”
        //send(param_2);//第二個參數是解密后的代碼(一大堆字符代碼)
        write_file("/storage/emulated/0/main_dump.js", param_2)
        var ret =  this.$init(param_1,param_2); 
        return ret;
    }
});

 代碼完成了,我們將其注入到目標app中吧。需要注意的是,代碼僅在程序剛啟動的時候注入,所以在程序啟動后注入是沒有用處的。要在程序啟動之前就安排好,

采取以下方式:

frida -U -l D:/myhook.js -f com.example.script --no-pause

 

(其中-f 即spwan,在程序最先啟動的時候注入。--no-pause是不暫停。具體解釋見本博:https://www.cnblogs.com/codex/p/12728908.html)

然后就可以在手機內部存儲的根目錄找到dump出來的文件了。

 


免責聲明!

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



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