大卖网逆向分析params参数之找到加密位置

本文详细描述了如何在安卓APK中追踪参数生成过程,通过调试工具如postern和charles抓包,使用JADX和fridahook定位参数生成点,并强调了技术交流的纯正用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分析的是damaiw_113376.apk这个版本

1.首先在调试机上安装APK,然后使用postern + charles抓包,发现很容易就抓到包了,不会的自行百度吧。

2.提交订单发包是下面地址

https://xxxxxx/gw/mtop.trade.order.create/4.0/

查看发包参数

 这里先看下data中的param参数,下面开始查找这个参数生成位置。

3.使用JADX打开APK,搜索{\"gzip\":\"true\"},发现以下几个位置

 在其中两个位置处查看代码,使用frida hook这两个位置,可以发现具体生成位置如下

 接着再hook深点,找到了生成位置

hook输出的签名串和发包的是一致的,说明就是这里生成了params参数。

这里可以在charles工具中增加一个断点,这样在提交订单时可以停住查看参数,订单又提交不了,停住对比hook输出参数和发包参数。

到此就找到了其中一个参数params的生成位置,下面就是把这个算法扣出来,另外核对入参。

参数实在太多了,又没有需求,就懒得整了。 

纯技术交流,请勿用于非法用途,如有权益问题可以发私信联系我删除.

### 关于 JavaScript 逆向工程、异步 Payload 加密及调试 #### JavaScript 逆向工程实践 对于 JavaScript 的逆向分析,通常涉及理解站如何处理数据发送至服务器的过程。例如,在某些情况下,登录参数可能通过 `JSON.stringify()` 方法被序列化成字符串形式再提交给服务端[^1]。 为了拦截这些过程中的关键函数调用,可以采用 Hook 技术来监视特定 API 行为: ```javascript (function() { var originalStringify = JSON.stringify; JSON.stringify = function(params) { console.log("Intercepted call to JSON.stringify with parameters:", params); debugger; // 设置断点以便进一步调查 return originalStringify.apply(this, arguments); } })(); ``` 这段代码展示了怎样挂钩 `JSON.stringify` 函数以捕获其输入参数并暂停执行流程供开发者审查环境变量或对象结构。 #### 异步 Payload 加密实现方式 当涉及到敏感信息如用户名和密码时,许多应用会选择先对其进行加密后再上传。这里展示了一个基于 MD5 哈希算法的例子,它利用了第三方库 `CryptoJS` 来完成这一任务[^2]: ```javascript var CryptoJS = require('crypto-js'); function generateSecurePayload(inputData, userAgent) { const userHash = CryptoJS.MD5(userAgent).toString(); const timestamp = new Date().getTime(); const randomSalt = `${timestamp}${Math.floor(Math.random() * 10)}`; let secureSignature = CryptoJS.MD5( 'fixedPrefix' + inputData + randomSalt + 'secretSuffix' ).toString(); return { hashValue: userHash, timeSent: timestamp, saltUsed: randomSalt, signature: secureSignature }; } ``` 此函数接收原始数据与用户代理作为输入,并返回经过哈希运算后的安全负载,其中包含了时间戳和其他辅助字段用于验证目的。 #### 调试技巧与工具推荐 在实际项目中,除了浏览器内置的开发者工具外,还可以借助 Node.js 生态圈内的 ExecJS 库来进行跨平台的 JavaScript 解析和支持不同引擎间的互操作性[^3]。下面是一个简单的例子说明如何使用 Python 结合 ExecJS 执行一段预编译好的 JavaScript 文件: ```python import execjs def execute_js_code(): context = execjs.compile(""" function run(someInput){ // 这里放置待运行的具体逻辑... return someResult; } """) result = context.call('run', "exampleArgument"); print(result) ``` 此外,Web Worker 提供了一种有效的方式让后台线程独立工作而不干扰主线程性能,这对于长时间运行的任务尤其有用,比如复杂的数学计算或是量 I/O 操作[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liberty888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值