记录55chat 登录 加密算法分析

App 核心通信加密协议:从 0 到 1 逆向剖析与实战复盘

文档受众:面向安全工程师、爬虫开发者与移动安全初学者。
文档目的:通过还原对某通信应用(openchat-loginv2接口)真实网络通讯防线的彻底突破过程,提供从“0认知抓包”到“源码静态追踪”,再到“原生 SO 底层汇编博弈”,最终剥开混淆外衣直面加密真相的全流程指导。


1. 勘察:黑盒下的网络抓包与现象分析

一切逆向工作始于抓包表现。在进行 user/unauthorized/issued 接口访问时,我们捕获了如下网络特征:

Request Headers 特征:

POST https://openchat-loginv2.sjhbf.xyz/user/unauthorized/issued HTTP/1.1
X-one: 985118e8fa98a4b...fd17f436f2cbbe  (48字节密文转化为96个Hex字符)
X-ten: 515bbbccdd69dd...c08ec66ce06fc5  (更长的Hex字符)

可以看到,业务方通过 X-oneX-ten 头加入了极长的签名/防重放混淆串。

Request Body 特征:

C1 A0 00 00 00 30 0B 26 2A 4E 16 64 C1 78 ...

Response Body 特征:

C0 80 00 00 00 80 9D 43 33 34 5D 10 B1 A7 ...

初看 Payload 数据,除了一段未知魔数规律(C1 A0C0 80),其余均被不可直接阅读的密文块(疑似 AES/RSA 等定长或不定长算法)替代。我们的目标极度清晰:

  1. 还原 Body 二进制数据包封包、解包逻辑,实现明文通信。
  2. 逆向推导 X-oneX-ten 协议头的算法引擎并还原运算。

2. 剥丝抽茧:JADX 中的 Java 层面顺藤摸瓜

面对 App,逆向的常规入手点是搜索 API 路径。我们将目标 APK 投入 JADX,以 user/unauthorized/issued 为字眼全局搜索:

2.1 定位 Retrofit 网络层体系

在 JADX 的反编译代码中,迅速锁定了网络层架构基于 Retrofit 扩展:

  • 看到 LoginHttpJson 等接口使用注解定义了发包地址:@POST("user/unauthorized/issued")。其返回的被封装为了一个泛型对象 Aes2<...>,这表明明文响应都被“壳”封装并存在一套解密机制。

2.2 解包与封包规则的破译

为了找寻 Body 的加密发生地点,我们沿着 Retrofit 的自定义装配器 HttpAdapterCreaterOkHttp 的 Interceptor,抓出了两条最核心的管线:

管线一:请求装箱 (RequestEncryptInterceptor.java)
它的源码明确表述了如何构造出我们抓包看到的 C1 A0 开头的字节:

// 第一二字节特征:对第0位置特定的Bit赋值控制!
bArr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

自学不成才

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

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

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

打赏作者

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

抵扣说明:

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

余额充值