1. 某直聘App加密校验算法逆向分析实战
作为一名从事移动安全研究多年的工程师,我最近对某主流招聘类App的安全机制进行了深入分析。这类应用通常涉及大量敏感用户数据,因此其通信加密方案往往设计得较为复杂。本文将详细还原该App核心加密参数sig和sp的生成逻辑,其中包含多个值得学习的工程实践。
在开始前需要说明:本文所有分析均基于已公开的算法原理和技术手段,不涉及任何私有协议破解。实际测试使用了我自己注册的测试账号,所有数据均为模拟生成。文中展示的技术细节仅供安全研究人员参考,请勿用于非法用途。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心参数概览与抓包分析
2.1 关键参数定位
通过Charles抓包工具观察App的网络请求,可以发现以下两个关键参数出现在每个API调用中:
-
sig:32位十六进制字符串,形如
E901468380F5E39B9E34388516DD30AC。根据长度和字符集特征,初步判断是MD5算法的输出结果。 -
sp:Base64编码的长字符串,长度通常在几百字节不等。解码后的二进制数据无明显可读性,说明经过了深度加密处理。
提示:在实际抓包时,建议使用真机配合SSL证书绑定(pinning)绕过工具。该App使用了自定义证书验证逻辑,直接使用模拟器可能无法捕获HTTPS流量。
2.2 请求参数结构示例
典型登录请求的原始格式如下:
http复制POST /api/zppassport/user/codeLogin HTTP/1.1
Host: www.xxx.com
Content-Type: application/x-www-form-urlencoded
account=test%40example.com&uniqid=123456&sig=E901468380F5E39B9E34388516DD30AC&sp=uBZPBlocker%2Fl...(省略)
值得注意的是,虽然请求头声明使用x-www-form-urlencoded格式,但实际业务参数都被封装在sp参数中传输,而URL上的参数仅包含基础标识字段。这种设计既保持了API网关的统一处理,又实现了业务数据的加密保护。
3. sig参数逆向分析:标准MD5的实现
3.1 静态定位关键函数
使用IDA Pro加载App的二进制文件,通过字符串搜索发现多处引用MD5的代码片段。其中最值得注意的是+[NSString stringDecodingByMD5:]方法,其交叉引用显示被多个网络相关模块调用。
反编译该方法的伪代码如下:
c复制id __cdecl +[NSString stringDecodingByMD5:](id self, SEL op, id input) {
v3 = objc_retainAutoreleasedReturnValue(
+[NSString data
