对某一漫画软件协议分析
字数 1747 2025-08-22 12:22:36

漫画软件协议分析与逆向工程教学文档


1. 目标应用框架分析

该漫画APP基于以下第三方开源模块构建:

  • 数字联盟:设备指纹/反欺诈服务
  • tv.cjump.jni:弹幕功能实现
  • uk.co.senab.photoview:图片缩放技术
  • Timber.log:日志记录工具
  • Retrofit2 + OkHttp3:网络请求框架
  • Fastjson:JSON解析库
  • qalsdk:腾讯云SDK(可能用于质量监控)
  • master.flame.danmaku:弹幕渲染引擎
  • com.meituan.robust:美团热修复插件(动态更新代码)

关键点

  • 混合使用商业SDK(数字联盟、qalsdk)和开源库,需注意协议冲突。
  • 美团热修复插件可能绕过应用商店更新机制,需关注其安全性。

2. 抓包与协议分析

工具:夜神模拟器 + 抓包工具(如Charles/Fiddler)
观察结果

  • 所有请求头包含 App-Info 参数,疑似用于设备校验。
  • 存在SSL Pinning,但已被绕过(方法未详述,通常使用Frida或Xposed Hook)。

关键点

  • SSL Pinning绕过是动态分析的前提,需掌握工具如objectionFrida
  • App-Info可能是服务端风控的核心参数。

3. 参数逆向分析

3.1 App-Info参数定位
  • 通过全局搜索定位到 AppInfoModel 类,发现参数经过Base64加密。
  • 关键子参数 visitor_sign 使用MD5加密,加密逻辑在 MDUtils 类中。
3.2 加密逻辑还原
  1. 原始参数构造

    • 调用链:Client.p() → 生成值 A:34f770f3177f0146
    • Client.o() → 生成值 34f770f3177f0146
    • 拼接格式:visiter=A:34f770f3177f0146&y-device=34f770f3177f0146
  2. MD5加密

    • 上述字符串经MD5哈希后生成visitor_sign
    • 示例:在线MD5工具验证结果需与服务端一致。

关键点

  • 静态分析(JADX/Ghidra)结合动态调试(Frida)可还原加密逻辑。
  • 设备指纹(y-device)可能关联设备硬件信息,需进一步追踪Client.o()来源。

4. 动态调试验证

工具objection(基于Frida的运行时工具)
步骤

  1. Hook MDUtils 的MD5方法,打印输入/输出。
    Java.perform(() => {
        let MD5Utils = Java.use("com.example.MDUtils");
        MD5Utils.a.implementation = function (input) {
            console.log("MD5 Input:", input);
            let result = this.a(input);
            console.log("MD5 Output:", result);
            return result;
        };
    });
    
  2. 调用 Client.p()Client.o() 获取原始值,验证拼接逻辑。

关键点

  • 动态验证可确认参数是否依赖运行时环境(如设备ID、时间戳)。
  • 若加密逻辑复杂,需转Native层分析(如libqalsdk.so)。

5. 安全防护与对抗

  • SSL Pinning
    • 默认使用OkHttp3的证书锁定,可通过Hook CertificatePinner 类绕过。
  • 代码混淆
    • 类名/方法名混淆(如a.b.c.d),需通过调用链上下文推断功能。
  • 热修复
    • 美团Robust插件可能动态修复漏洞,需关闭其热更新功能进行静态分析。

6. 完整协议复现流程

  1. 设备指纹生成
    • 调用 Client.o() 获取设备标识(可能基于IMEI/Android ID)。
  2. 参数拼接
    raw_params = "visiter=A:34f770f3177f0146&y-device=34f770f3177f0146"
    visitor_sign = hashlib.md5(raw_params.encode()).hexdigest()
    
  3. Base64编码
    • 将包含visitor_sign的JSON结构体Base64编码为App-Info

7. 扩展研究方向

  • 数字联盟SDK:分析其设备指纹生成规则(可能涉及内核级信息)。
  • Fastjson漏洞:检查历史反序列化漏洞(如CVE-2022-25845)。
  • 弹幕协议:逆向tv.cjump.jni的JNI层,解析实时通信逻辑。

附录:工具清单

  • 静态分析:JADX、Ghidra
  • 动态调试:Frida、objection
  • 抓包:Charles(需配置ProxyDroid模拟器全局代理)
  • 加密验证:CyberChef(在线编解码工具)

通过本教学,读者可掌握从抓包到算法还原的完整逆向流程,适用于类似APP的协议分析场景。

漫画软件协议分析与逆向工程教学文档 1. 目标应用框架分析 该漫画APP基于以下第三方开源模块构建: 数字联盟 :设备指纹/反欺诈服务 tv.cjump.jni :弹幕功能实现 uk.co.senab.photoview :图片缩放技术 Timber.log :日志记录工具 Retrofit2 + OkHttp3 :网络请求框架 Fastjson :JSON解析库 qalsdk :腾讯云SDK(可能用于质量监控) master.flame.danmaku :弹幕渲染引擎 com.meituan.robust :美团热修复插件(动态更新代码) 关键点 : 混合使用商业SDK(数字联盟、qalsdk)和开源库,需注意协议冲突。 美团热修复插件可能绕过应用商店更新机制,需关注其安全性。 2. 抓包与协议分析 工具 :夜神模拟器 + 抓包工具(如Charles/Fiddler) 观察结果 : 所有请求头包含 App-Info 参数,疑似用于设备校验。 存在SSL Pinning,但已被绕过(方法未详述,通常使用Frida或Xposed Hook)。 关键点 : SSL Pinning绕过是动态分析的前提,需掌握工具如 objection 或 Frida 。 App-Info 可能是服务端风控的核心参数。 3. 参数逆向分析 3.1 App-Info参数定位 通过全局搜索定位到 AppInfoModel 类,发现参数经过Base64加密。 关键子参数 visitor_sign 使用MD5加密,加密逻辑在 MDUtils 类中。 3.2 加密逻辑还原 原始参数构造 : 调用链: Client.p() → 生成值 A:34f770f3177f0146 Client.o() → 生成值 34f770f3177f0146 拼接格式: visiter=A:34f770f3177f0146&y-device=34f770f3177f0146 MD5加密 : 上述字符串经MD5哈希后生成 visitor_sign 。 示例:在线MD5工具验证结果需与服务端一致。 关键点 : 静态分析(JADX/Ghidra)结合动态调试(Frida)可还原加密逻辑。 设备指纹( y-device )可能关联设备硬件信息,需进一步追踪 Client.o() 来源。 4. 动态调试验证 工具 : objection (基于Frida的运行时工具) 步骤 : Hook MDUtils 的MD5方法,打印输入/输出。 调用 Client.p() 和 Client.o() 获取原始值,验证拼接逻辑。 关键点 : 动态验证可确认参数是否依赖运行时环境(如设备ID、时间戳)。 若加密逻辑复杂,需转Native层分析(如 libqalsdk.so )。 5. 安全防护与对抗 SSL Pinning : 默认使用OkHttp3的证书锁定,可通过Hook CertificatePinner 类绕过。 代码混淆 : 类名/方法名混淆(如 a.b.c.d ),需通过调用链上下文推断功能。 热修复 : 美团Robust插件可能动态修复漏洞,需关闭其热更新功能进行静态分析。 6. 完整协议复现流程 设备指纹生成 : 调用 Client.o() 获取设备标识(可能基于IMEI/Android ID)。 参数拼接 : Base64编码 : 将包含 visitor_sign 的JSON结构体Base64编码为 App-Info 。 7. 扩展研究方向 数字联盟SDK :分析其设备指纹生成规则(可能涉及内核级信息)。 Fastjson漏洞 :检查历史反序列化漏洞(如CVE-2022-25845)。 弹幕协议 :逆向 tv.cjump.jni 的JNI层,解析实时通信逻辑。 附录:工具清单 静态分析:JADX、Ghidra 动态调试:Frida、objection 抓包:Charles(需配置ProxyDroid模拟器全局代理) 加密验证:CyberChef(在线编解码工具) 通过本教学,读者可掌握从抓包到算法还原的完整逆向流程,适用于类似APP的协议分析场景。