前言
最近搞了一下安卓。簡單學習記錄一下。
目標程序: xiao shui mian
也就是某個參數的逆向
準備環境
- 安卓機
- scrcpy
- adb
- frida
- 解包軟件(不列舉了)
這種環境安裝這里就不多說了。教程也很多。
參數逆向分析
先抓包看看參數
這里我使用的是postern抓包。因為如果要用網絡代理的話可能會有檢測。這里一步到位了
如下圖配置
然后打開charles 配置下。記得安裝證書 這里簡單的配置我跳過了。
我們這里直接點進 社區的某個評論
然后我們抓包看看參數
如下圖 sig 是我們所需要逆向的參數。
反編譯逆向分析
這里直接把apk丟到Jadx中就可以了。
如下圖操作即可。
然后發現 他在Java層是由Sinner.sign 返回來的。繼續點進去。
然后發現這里上面是邏輯層的判斷。下面是調用了 sbase的getSig
這里繼續點進去。發現是調用了 lib中的base
如下圖文件的位置
這里直接右擊解壓apk文件。然后找到對應的位置。
把這個libbase 放到 IDA中。記得選擇IDA64
點擊搜索
然后點進去。發現這就是個md5加密。
然后按tab 進去看方法、發現傳了3個參數。
那后面就簡單了。先用frida hook下基址。
代碼如下
Java.perform(function () {var dlsymadd = Module.findExportByName("libbase.so", 'dlsym');Interceptor.attach(dlsymadd, {onEnter: function (args) {this.info = args[1];}, onLeave: function (retval) {var module = Process.findModuleByAddress(retval);if (module == null) {return retval;}// native方法var funcName = this.info.readCString();console.log(funcName)if (funcName.indexOf("GetSig") !== -1) {console.log(module.name);console.log(module.base);console.log('\t', funcName);}return retval;}})
});
執行以下命令
frida -U -f com.psyone.brainmusic -l static_find_so.js
找到基址了。
然后就根據基質。hook 這個傳參就行了。
這里通過Interceptor.attach 來hook 兩個傳參就行了。
var funcAddress = ptr("0x701bdb8000") // 替換偏移量為實際值
var funcAdd = funcAddress.add(0x1c2c)
然后運行文件 這里切記要用大F
frida -U -F -l 新的js文件
這里可以打開抓包軟件 對比值是否一致。
先看下原本請求
再看下hook到的 然后發現原來是前后加鹽了。
我們放到自己的代碼中運行下看看是不是3b6198d0e19a919d7db354c4d1dfd5d6
然后發現是一致的 那這個參數就hook成功了。
最近也是剛學安卓。其實也沒怎么學 就平時問問大佬。寫的不好的 希望各位見諒。
結語
有興趣的同學可以關注下我的個人公眾號和星球
公眾號鏈接
星球鏈接