日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大润发优鲜app之paramsMD5参数分析

發布時間:2024/4/11 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大润发优鲜app之paramsMD5参数分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天我們要分析的app 是大潤發優鮮, 版本號1.4.0,小伙伴們可以去各大應用商定自行下載,軟件使用360殼且混淆,APP校驗了HTTPS證書,需要使用xposed的JustTrustMe模塊。

參考鏈接:https://core.vivcms.com/2020/08/14/420.html,
轉載請注明出處:
https://blog.csdn.net/weixin_38819889/article/details/122456132

同系列文章推薦下:
1.聚美app之 _sign參數分析
2.大潤發優鮮app之paramsMD5參數分析
3.美圖秀秀 sig參數分析
4.貝殼app Authorization參數分析
5.豆瓣app sig參數分析
6.半次元app之data參數分析

1.抓個包

打開charles抓個包,里面有一個參數叫paramsMD5,這就是今天要研究的參數。然后打開jadx,搜索半天發現啥也沒有搜到,猜測該app是加殼。

2.查殼

我們先打開查殼工具,查一查殼,這里是mac終端使用的,工具叫ApkScan-PKID,有些殼查不到,但是這里勉強夠用了。


可以看到用的是360的殼。

3. 脫殼

然后我們用下葫蘆娃的工具FRIDA-DEXDump,進到frida_dexdump所在的目錄,直接運行python3 main.py,默認三秒鐘,然后就成功把軟件的殼脫掉了,拿到dex文件。

再然后把一個個dex文件重新合并拼裝,打包成一個新的apk文件,效果如下:

4.jadx靜態分析

這里搜索關鍵字 "paramsMD5",就2個地方,點進去看看這個this.f13604a.put("paramsMD5", b(a2));

然后來到這里,

發現 data = a2,paramsMD5=b(a2);,其實這里面的a2就是抓包拿到的data,也就是請求傳遞的body,b()方法是個啥,跟進去看看。

來到這里,b() 方法java代碼如下:

public static String b(String str) {try {JSONObject jSONObject = new JSONObject(str);boolean z = false;if (jSONObject.has(f13597d)) {z = jSONObject.getBoolean(f13597d);}String str2 = "";if (jSONObject.has(f13599f)) {str2 = jSONObject.getString(f13599f);}String str3 = "";if (jSONObject.has(f13598e)) {str3 = jSONObject.getString(f13598e);}String str4 = "";if (jSONObject.has(f13600g)) {str4 = jSONObject.getString(f13600g);}return b.a(str + (z + str2 + str3 + str4));} catch (JSONException e2) {e2.printStackTrace();return b.a(str);} }

這里直接看返回值 b.a(str + (z + str2 + str3 + str4));,z和str2和str3和str4到底是個啥,跟進去看看。

看到這里我們大概明白了,就是聲明一個JSONObject jSONObject = new JSONObject(str);,就是json對象,然后依次判斷取出這四個字段,組裝成一個新的字符串,交給b.a()方法執行。

b.a()代碼如下:

public static String a(String str) {String str2 = "@456yx#*^&HrUU99";if (e.f13526e.equals(e.a().b()) || e.f13527f.equals(e.a().b())) {str2 = "@yx123*&^DKJ##CC";}try {SecretKeySpec secretKeySpec = new SecretKeySpec(str2.getBytes(), "HmacSHA256");Mac instance = Mac.getInstance(secretKeySpec.getAlgorithm());instance.init(secretKeySpec);return Base64.encodeToString(instance.doFinal(str.getBytes()), 2);} catch (Exception e2) {e2.printStackTrace();return null;}}

看名字,大概就能猜到這里使用的HmacSHA256+base64組合算法(如果不了解該算法,請看文章: https://blog.csdn.net/weixin_38819889/article/details/122455802),到這里靜態分析差不多,拿出我們的frida動態調試一下。

5.frida動態調試

js代碼如下:

Java.perform(function (){var g_class = Java.use("com.rt.market.fresh.application.g");g_class.b.overload("java.lang.String").implementation = function(v1){console.log("↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");console.log("Sig入參-參數:" + v1);var res = g_class.b(v1);console.log("Sig加密后的數據:" + res);console.log("↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");return res;}var b_class = Java.use("com.rt.market.fresh.application.g$b");b_class.a.overload("java.lang.String").implementation = function(n1){console.log("a方法入參-參數:" + n1);var res = b_class.a(n1);console.log("a方法返回-數據:" + res);return res;}})

執行命令看看效果:

frida -U com.rt.market.fresh -l hook_dufxian.js


好了,到此分析完成。

6.算法還原

加密還算簡單,最后已經還原成python,測試對比一下paramsMD5: e675/mblyBuNdX8+uWUpx5FwGOHWclKILz2UDDtPDaw=,值對得上。

完成,手工!

總結

以上是生活随笔為你收集整理的大润发优鲜app之paramsMD5参数分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。