某瓜数据之sign参数分析
今天我們要分析的app 是某瓜數據, 版本號v1.4.7 ,小伙伴們可以去各大應用商定自行下載。
轉載請注明出處:
https://blog.csdn.net/weixin_38819889/article/details/123847587
1.先來抓個包
經分析,該app沒有殼,然后加密參數就是一個sign,今天研究的重點就是看看sign值是咋生成的。
2.jadx靜態分析
直接搜索"sign",在這里(builder2.addHeader("Sign", com.feigua.androiddy.b.a.a(hashMap, d2, currentTimeMillis + ""));)就能看到很可疑的地方,然后點進去看看里面的代碼 是個啥。
之后,來到這里了,代碼截圖如下:
在這里看到 使用new Request.Builder();方法實例化了一個請求對象builder2,然后builder2.addHeader(),又不斷添加幾個請求頭,其中有一個就是"sign"參數,sign的值又是這個方法 com.feigua.androiddy.b.a.a(hashMap, d2, currentTimeMillis + "")返回來的,沒錯這里就是真正的加密地方(ps:因為我提前確認過了)。
繼續跟進去,看看com.feigua.androiddy.b.a.a()方法咋實現的。
大致看了下java的偽代碼,這里定義了一個a方法,分別傳入三個參數,一個是hashMap,另外2個都是str字符串。然后首先聲明了一個stringBuffer 對象,然后拼接一個鹽值,之后向hashmap添加了 SessionId,Platform和ts 時間戳,再之后把傳入的參數排個序,拼接成個字符串,最后走了一個i.a(stringBuffer.toString())方法。
這個i.a()方法是個啥?跟進去看看,來到這里。
看關鍵詞md5,很明顯這就是md5加密,正好和抓包的sign=71340D7922D7B7BEC476F49F5AEEC32C 32位長度一致。
3. frida動態調試
打開frida服務,運行命令: frida -U com.feigua.androiddy -l hook_sign.js
js命令如下:
Java.perform(function(){var a = Java.use('XXXXXXXXXXXX');a.a.implementation = function(parm1, parm2, parm3){console.log("↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");console.log("a方法參數1:", parm1);var hashmap_str = "";var it = parm1.keySet().iterator();while(it.hasNext()){var keystr = it.next().toString();var valuestr = parm1.get(keystr).toString();hashmap_str += keystr + "=" + valuestr + "&";}console.log("a方法參數1轉str:", hashmap_str);console.log("a方法參數2:", parm2);console.log("a方法參數3:", parm3);var result = this.a(parm1, parm2, parm3);console.log("a方法加密結果:", result);console.log("↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");return result}; });效果如下圖所示:
處理的邏輯并不是很復雜,接下來python還原一下,響應數據也拿到手:
完事,手工,下一個。
總結
以上是生活随笔為你收集整理的某瓜数据之sign参数分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 某次元app之data参数分析
- 下一篇: 使用 frida+dexdump对apk