某钱包转账付款算法分析篇

本文为看雪论坛优秀文章
看雪论坛作者ID:kzzll
1
抓包
2
定位


!str.contains("qpay_ydt.cgi") && !str.contains("qpay_balance.cgi") && !str.contains("qpay_fpay_regbind.cgi")这里直接对它进行HOOK,我使用的是frida(雷电4模拟器环境),我们对这个signEncdata函数进行分析它具体的传参,根据代码过程大概判断出,str是URL,剩余2个,拭目以待。
var EncryptRequest = Java.use("com.tenpay.sdk.basebl.EncryptRequest");EncryptRequest['signEncdata'].implementation = function(str,str2,map){console.log('[signEncdata] --> str:'+str)console.log('[signEncdata] --> str2:'+str2)console.log(map)var ret = this.signEncdata(str,str2,map)console.log("[signEncdata] ret -- >" +ret)return ret}
如下面图所示:

但是代码没有能正常解析出来,具体它的参数打印出来的是:
[encypt] --> qquin:276265453[encypt] --> url:https://myun.tenpay.com/cgi-bin/qwallet_misc/qpay_unified_config.cgi?ver=2.0&chv=3[encypt] --> keyIndex:8[encypt] --> postdata:skey=v0aaf855a20617de1e4cf7b447711a49&uin=276265453&skey_type=0[encypt] --> pskey:D2bVXKh4GsqkNgFevM37b3Qf8h6yNyC4F4-e937-w58_--------[encypt] --> qquin:276265453[encypt] --> url:https://myun.tenpay.com/cgi-bin/clientv1.0/qpay_balance.cgi?ver=2.0&chv=3[encypt] --> keyIndex:8[encypt] --> postdata:token_id=5M6477be1c9445ba1621c6319e403075&p=31363335363339383237F0D6C4CEE093903BFD05D6303A581B97E8442ABD7934E8CCC9D71AAF6B60BD5186B12729677B20A25232EDECB539B81775F69AD79B48AF90B0D96BD8AB1D18E3EEAC513F451010C782F3919935171EA650F937A4C733865ECE77E9B4352D6BE6360D50605106FD9581221F92A809A42FC8617884EEAD942F721C71A3A32B9A642F94676A49F7C74E45B0D7B62802809FDEE2EE68×tamp=1635639827&is_reentry=0&skey=v0aaf855a20617de1e4cf7b447711a49[encypt] --> pskey:D2bVXKh4GsqkNgFevM37b3Qf8h6yNyC4F4-e937-w58_

这些数据最长的就是postdata,也就是它发出去的数据的明文。
这个函数触发了2次,第一次估计是在支付之前获取某些信息,而第二次则是提交支付密码(参数p,也是加密后的)以及token_id(支付订单号)进行完成支付。
而skey估计则是cookie之类的关键token。
3
枯燥无味的分析
L_0x01b4:com.tenpay.ndk.DesEncUtil r0 = com.tenpay.sdk.basebl.EncryptRequest.des // Catch:{ all -> 0x01cc }java.lang.String r2 = r8.toString() // Catch:{ all -> 0x01cc }postdata2 = keyIndexr0.encryptDes(postdata2, r2) // Catch:{ all -> 0x01cc }
var DesEncUtil = Java.use("com.tenpay.ndk.DesEncUtil");DesEncUtil['encryptDes'].overload('int', 'java.lang.String').implementation = function(key,data){var ret = this.encryptDes(key,data)console.log("[encryptDes] data --> "+data)console.log("[encryptDes] key --> "+key)console.log("[encryptDes] ret --> "+ret)return ret}
[encryptDes] data --> pskey=D2bVXKh4GsqkNgFevM37b3Qf8h6yNyC4F4-e937-w58_&skey=v0aaf855a20617de1e4cf7b447711a49&uin=276265453&skey_type=0&h_net_type=WIFI&h_model=android_mqq&h_edition=84&h_location=2F55FF2C8A2AA4435A87356EA9373F29%7C%7CMI%209%7C7.1.2%2Csdk25%7C3E2A52202DF351F3821979EE78BEB82C%7CD41D8CD98F00B204E9800998ECF8427E%7C1%7C&h_qq_guid=3E2A52202DF351F3821979EE78BEB82C&h_qq_appid=537100433&h_exten=[encryptDes] key --> 8[encryptDes] ret --> true------[encryptDes] data --> pskey=D2bVXKh4GsqkNgFevM37b3Qf8h6yNyC4F4-e937-w58_&token_id=5M460db95537d6b5adb2a100c1870f77&p=31363335363339383237F0D6C4CEE093903BFD05D6303A581B97E8442ABD7934E8CCC9D71AAF6B60BD5186B12729677B20A25232EDECB539B81775F69AD79B48AF90B0D96BD8AB1D18E3EEAC513F451010C782F3919935171EA650F937A4C733865ECE77E9B4352D6BE6360D50605106FD9581221F92A809A42FC8617884EEAD942F721C71A3A32B9A642F94676A49F7C74E45B0D7B62802809FDEE2EE68×tamp=1635639827&is_reentry=0&skey=v0aaf855a20617de1e4cf7b447711a49&h_net_type=WIFI&h_model=android_mqq&h_edition=84&h_location=2F55FF2C8A2AA4435A87356EA9373F29%7C%7CMI%209%7C7.1.2%2Csdk25%7C3E2A52202DF351F3821979EE78BEB82C%7CD41D8CD98F00B204E9800998ECF8427E%7C1%7C&h_qq_guid=3E2A52202DF351F3821979EE78BEB82C&h_qq_appid=537100433&h_exten=[encryptDes] key --> 8[encryptDes] ret --> true

如上图所示,跟进去我们发现了它真正的加密过程是在so层中完成。

我们看到它加载的是cftutils_v1、qwssl两个文件。

4
运气?

但是它并不能正常打开查看,通过十六进制查看发现,它竟然是一个APK格式。

把他转换成zip格式打开,发现了新大陆:


进入lib发现了2个惊喜文件。

而前面所说过的keyindex,其实就如箭头所示,unk_26004是一个存放加密公钥的常量,它应该是偏移了几位进行读取,以达到部分混淆作用把。
看雪ID:kzzll
https://bbs.pediy.com/user-home-885524.htm


# 往期推荐


球分享

球点赞

球在看

点击“阅读原文”,了解更多!
[广告]赞助链接:
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注KnowSafe微信公众号随时掌握互联网精彩
- 1Panel,免费开源的容器化Linux服务器运维管理面板
- 如何靠 AI 赚得盆满钵满?
- 乔布斯离开后的苹果 | 历史上的今天
- 创投|畅行智驾获高通创投投资,加速智能驾驶技术突破与量产落地
- 520 丨 华为云竟然上新了三支口红
- 编程大神竟“玩”出了不像 C 的 C 程序
- 日本top2高校丢失77TB研究数据,惠普谢罪并表示对此负全责
- 重磅新课!《VMProtect分析与还原》
- 大数据+AI,看“腾讯大数据-天工”如何引领隐私计算浪潮
- Qualcomm推出全新骁龙480 5G移动平台,首次将5G扩展至搭载骁龙4系的移动终端
- 产业互联网时代的安全「新解」:从群雄割据到安全普惠
- 微博凭空自动关注和点赞 使用HSTS强制HTTPS加密避免变“傀儡”
赞助链接



