app逆向--获取验证码参数param加密过程(脱敏版)

app逆向:验证码参数param加密分析

声明

本文章中所有内容仅供学习交流使用,不得用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关。

若擅自使用本文讲解的技术而导致的任何意外,作者均不负责。文中若有侵权内容,请立即联系作者删除!

〇:友情提示

  1. 本文章已在微信公众号【逆向学习日记】发布,若在【优快云】中无法全部查看,可以直接点击【app逆向–获取验证码参数param加密过程(脱敏版)】查看。
  2. 在微信公众号【逆向学习日记】也可以阅读更多文章。
  3. 感谢关注微信公众号和阅读文章的朋友!

Ⅰ:目标

  1. App:某视频交友软件
  2. 版本:v1.1.1
  3. 目标:param

Ⅱ:抓包分析

  1. 首先我们使用 Charles+SocksDroid 配合进行抓包,进入注册页面,输入手机号,点击获取验证码触发请求,观察接口。在这里插入图片描述

  2. 我们可以发现请求体参数param参数被加密了,需要分析处它的加密逻辑。此时我们用GDA反编译工具对APK进行反编译,因为我们需要看param的加密逻辑,此时可以根据字符串param关键字搜索。在这里插入图片描述

<think>好的,用户现在想了解如何逆向分析口袋48接口的加密参数,涉及抓包、反编译和加密算法分析。我需要结合之前提供的步骤和现有的引用资料来回答这个问题。 首先,用户之前的问题是关于抓取口袋48的数据,现在深入到了逆向分析加密参数的部分。根据引用资料,特别是引用[2]和[3],里面提到了反编译、断点调试以及加密算法还原的方法。比如引用[2]中提到的使用JEB进行反编译和动态调试,找到加密函数和密钥的位置,这应该适用于安卓端的分析。而引用[3]里提到了小程序的静态分析,可能适用于微信端的小程序本的口袋48。 用户可能需要分步骤的指导,包括抓包定位加密参数、反编译APP、分析加密逻辑、动态调试以及还原算法。需要考虑不同平台(如安卓APP或微信小程序)的不同处理方法。例如,安卓APP可能需要使用Jadx或JEB进行反编译,而微信小程序可能需要反编译小程序包然后分析JavaScript代码。 同时,用户可能关心如何应对反爬机制,比如签名参数sign的生成,这通常涉及时间戳、设备信息和其他参数的组合加密。引用[4]中提到sign加密算法的实现,可能需要分析Java层或Native层的代码,或者Hook方法拦截关键函数。 需要注意法律合规性,确保逆向分析不违反服务条款。另外,引用[3]提到静态分析即使无法完全逆向算法,也能提供有效信息,比如关键函数的位置或参数组合方式,这也是需要强调的点。 总结来说,回答需要涵盖抓包定位加密参数、反编译工具的使用、静态和动态分析加密逻辑、Hook技术以及算法还原的具体步骤,并结合引用中的案例给出示例代码或工具推荐。同时,提醒用户注意法律风险,并提供进一步的问题供用户参考。</think>### 如何逆向分析口袋48接口的加密参数--- #### **步骤1:定位加密参数** 1. **抓包分析请求特征** - 使用抓包工具(如Charles/Fiddler/HTTP Toolkit)捕获口袋48的API请求,重点关注以下字段: - `sign`(常见签名参数- `timestamp`(时间戳) - `nonce`(随机数) - 其他自定义加密参数(如`encryptKey`) - 示例请求: ```text GET /api/live/list?sign=4a3b2c1d&timestamp=1620000000 HTTP/1.1 ``` - **签名参数(sign)**通常由请求参数、时间戳、密钥等组合后加密生成[^2][^4]。 --- #### **步骤2:反编译APP或小程序** 1. **安卓APP逆向** - 使用工具: - **Jadx**:反编译APK查看Java/Kotlin代码。 - **JEB**:动态调试加密逻辑(如引用[2]中的`encodeToString()`函数定位)。 - 关键目标: - 查找加密工具类(如`EncryptUtils`、`SignGenerator`)。 - 定位密钥(可能硬编码在代码中,如引用[2]中的`flag{VEFREgwEAA==}`)。 2. **微信小程序逆向** - 使用工具: - **UnpackMiniApp**:解包小程序`.wxapkg`文件。 - **Chrome DevTools**:调试反编译后的JavaScript代码。 - 分析逻辑: - 查找`sign`生成函数(如`md5(param1 + timestamp + secret)`)。 - 参考引用[3]的静态分析思路,定位关键加密代码片段。 --- #### **步骤3:分析加密逻辑** 1. **静态分析** - 在反编译后的代码中搜索关键词: - `md5`、`sha256`、`AES`、`Base64` - `sign`、`encrypt`、`generateKey` - 示例代码片段(Java): ```java public String generateSign(String params, String secret) { return md5(params + secret + timestamp); } ``` 2. **动态调试** - 使用工具: - **Frida**:Hook加密函数(如`md5()`或自定义签名函数)。 - **Xposed/LSPosed**:拦截关键方法(如引用[2]中的`areEqual()`函数)。 - 调试步骤: 1. 在加密函数入口设置断点。 2. 观察输入参数返回值(如密钥拼接方式)。 3. 修改参数验证加密逻辑(如替换密钥测试)。 --- #### **步骤4:还原加密算法** 1. **算法类型判断** - **哈希算法**:输出固定长度(如MD5为32位,SHA256为64位)。 - **对称加密**:AES/DES需密钥和IV(如引用[4]中的`encryptKey`)。 - **非对称加密**:RSA需公钥/私钥对。 2. **代码复现** - 根据逆向结果编写Python/Node.js代码: ```python import hashlib, time def generate_sign(params, secret): timestamp = int(time.time()) raw_str = f"{params}{timestamp}{secret}" return hashlib.md5(raw_str.encode()).hexdigest() ``` --- #### **步骤5:验证与绕过** 1. **本地测试** - 使用复现的算法生成`sign`,与原请求对比是否一致。 - 修改时间戳/随机数验证动态参数影响。 2. **应对动态密钥** - 若密钥通过接口动态获取(如引用[3]中的签名逻辑): - 先请求密钥接口(如`/api/getKey`)。 - 结合静态密钥(如设备ID)生成最终签名。 --- #### **工具与技巧** | 工具/技术 | 用途 | 示例场景 | |-----------------|-------------------------------|------------------------------| | **Frida** | Hook加密函数 | 拦截`md5()`输入输出 | | **Jadx** | 反编译APK | 查找`SignGenerator`类 | | **Charles** | 抓包分析请求参数 | 发现`sign`依赖`timestamp` | | **UnpackMiniApp**| 解包微信小程序 | 分析小程序内JS加密逻辑 | --- #### **注意事项** 1. **法律风险** - 避免侵犯口袋48的《用户协议》和《隐私政策》。 - 部分接口可能涉及个人信息,需谨慎处理[^3]。 2. **复杂度分级** - 简单加密:MD5/SHA1 + 盐值(如引用[4]的案例)。 - 复杂加密:AES + 动态密钥 + 混淆(需结合Native层分析)。 --- ### 相关问题 1. **如何用Frida Hook口袋48的签名函数?** 2. **口袋48的加密参数是否依赖设备指纹?** 3. **如何分析Native层(SO库)的加密逻辑?** --- 通过以上步骤,可系统化逆向分析口袋48的加密参数,需结合静态分析与动态调试技术,具体实现需根据目标平台的加密策略调整。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值