聚美app之 _sign参数分析
今天我們要分析的app 是聚美優品, 版本號v8.781 (當前最新版),小伙伴們可以去各大應用商定自行下載。
轉載請注明出處:
https://blog.csdn.net/weixin_38819889/article/details/122488891?spm=1001.2014.3001.5501
同系列文章推薦下:
1.聚美app之 _sign參數分析
2.大潤發優鮮app之paramsMD5參數分析
3.美圖秀秀 sig參數分析
4.貝殼app Authorization參數分析
5.豆瓣app sig參數分析
6.半次元app之data參數分析
1.先來抓個包
經分析該app沒有殼,里面有一個antifraud_sign參數加密,使用postman發起請求,發現不攜帶該參數,也可以拿到數據。說明服務器并沒有對該參數做校驗,但是我們處于研究的目的,就好好分析一下。
2.jadx靜態分析
直接搜索文本antifraud_sign,看到第一個地方(params.put(“antifraud_sign”, md5);),這里面還有一個MD5,剛好參數長度也是32位 很像,來跟進去看一看。
來到這里,可以看到antifraud_sign = a(params, currentUnixTime, f());,這個a()方法是個啥,跟進去看一看。
然后又來到這里了。
大概的看了一下邏輯,params 參數是一個map字典,currentUnixTime 一看就是時間戳,token 就是校驗用戶身份的。處理的邏輯大概就是 把傳遞的params做了一個a(params)的處理,然后對字典排個序,拼接成字符串,再在尾部拼接個時間戳和token(算是鹽值),最后返回的時候讓a(sb.toString(), "UTF-8")方法處理下。
這是a(Map<String, String> params) 方法。
這是a(String s, String charset)方法,一看關鍵詞就是MD5,和我們開始猜想幾乎差不多,確定了這里就是加密的地方。
3. frida動態調試
打開frida服務,運行命令:
frida -U com.jm.android.jumei -l hook_sig.jsjs命令如下:
Java.perform(function (){var BaseJuMeiSign = Java.use("com.jm.android.jumei.baselib.jmtoken.BaseJuMeiSign");BaseJuMeiSign.a.overload("java.util.Map","long", "java.lang.String").implementation = function(v1,v2,v3){console.log("↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");var it = v1.keySet().iterator();var result = "";while(it.hasNext()){var keystr = it.next().toString();var valuestr = v1.get(keystr).toString();result += keystr + "=" + valuestr + "&";}console.log("Sig入參-參數v1:" + result);console.log("Sig入參-參數v2:" + v2);console.log("Sig入參-參數v3:" + v3);var res = this.a(v1,v2,v3);console.log("Sig加密后的數據:" + res);console.log("↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");return res;}BaseJuMeiSign.a.overload("java.lang.String", "java.lang.String").implementation = function(n1,n2){console.log("md5入參-參數n1:" + n1);console.log("md5入參-參數n2:" + n2);var md5_res = this.a(n1,n2);console.log("md5加密后的數據:" + md5_res);return md5_res;}})效果如下圖所示:
處理的邏輯并不是很復雜,接下來python還原一下,效果如下:
然后就成功的計算出 _sign 值了和 frida hook出來的結果一模一樣,但是有一點和抓包拿到的值不一樣,奇怪了,想半天沒發現問題出在哪里,算了,先這樣吧。
完事,手工。
總結
以上是生活随笔為你收集整理的聚美app之 _sign参数分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: adb 查看当前包名和Activity
- 下一篇: frida hook so层方法大全