某某校园 App 协议与逆向分析
字数 1581 2025-12-26 12:15:19

某某校园 App 协议与逆向分析教学文档

1. 概述

本教学文档基于对“某某校园”App的逆向分析,重点解析其安全机制、通信协议及核心功能接口。该App采用了多层次的反作弊(anti-cheat)防护策略,包括环境检测、代码保护及通信加密等。

注意:本文档仅用于安全研究与学习目的,严禁用于非法活动。


2. 反作弊机制分析

新版“某某校园”App集成了以下反作弊检测功能:

  • 多开环境检测:防止应用在多开分身环境中运行。
  • 模拟器/虚拟机检测:识别是否在模拟器(如Android Studio AVD)或虚拟机中运行。
  • SO注入检测:监控动态链接库是否被非法注入。
  • Hook框架检测:检测Xposed、Frida等Hook工具。
  • 调试器附加检测:防止动态调试。
  • SSL Pinning:严格校验服务器证书,阻断中间人抓包。

3. 抓包与绕过策略

3.1 SSL Pinning 绕过

  • 方法:使用旧版本APK(未强化SSL Pinning)或重写版本检测API。
  • 工具推荐:Reqable(支持Python脚本、类似Fiddler的局域网抓包及API测试功能)。

3.2 抓包发现

  • 接口返回数据均为加密格式。
  • 请求头中包含动态生成的 sign 字段,用于签名验证。

4. 逆向分析流程

4.1 脱壳与解包

  • App使用网易易盾加固。
  • 脱壳平台:https://56.al(支持哈希匹配,已有脱壳记录时可秒脱)。
  • 脱壳后使用JADX等工具分析DEX文件。

4.2 定位关键代码

  • 搜索添加 Sign 请求头的代码段。
  • 跟踪签名生成函数,逆向调用链以理解完整流程。

4.3 密钥提取

  • 密钥生成逻辑中通过 x7.d.b() 判断运行环境(初始值为9)。
  • 示例解密密钥:F44B0282BEA83557
  • 通过跟踪相关函数获取加密所需第二密钥及配套参数。

4.4 算法复现(Python)

根据逆向结果,核心算法包括:

  • 动态签名生成(基于时间戳、设备信息等)。
  • 请求数据加密(AES或自定义算法)。
  • 响应数据解密。

5. 核心接口解析

5.1 阳光跑相关接口

  1. querySchoolFences

    • 功能:查询电子围栏信息(经纬度范围、开放时间、打卡点数量、人脸识别要求等)。
    • 围栏数据为包含至少3个经纬度点的数组。
  2. checkSunRunConfig

    • 功能:检查跑步计划配置(打卡方式、围栏规则、人脸识别等)。
  3. querySunRunAbstractInfoV2

    • 功能:获取阳光跑计划摘要及学校规定(如禁止连接WiFi跑步)。
  4. uploadRunRecord

    • 功能:每15秒上报一次数据(包含5个采样点,每3秒采集一次)。
    • 数据内容:围栏距离、经纬度、卫星信息等。
  5. finishSunRun

    • 功能:结束跑步并上传最终数据(步数、距离、轨迹、配速),用于成绩计算。
  6. 异常处理接口

    • queryUnFinishRun:查询未完成的运动记录。
    • abnormalFinishSunRun:终止异常运动(数据不被记录)。

5.2 反作弊后台逻辑

  • 服务器通过上传的数据(如轨迹连续性、速度合理性)进行作弊判定。
  • 高频测试可能触发风控,需谨慎模拟。

6. 技术总结

6.1 逆向要点

  • 优先绕过环境检测(修改环境判断函数返回值)。
  • 定位签名算法需跟踪网络库初始化代码。
  • 密钥可能硬编码或动态生成,需结合运行时逻辑分析。

6.2 风险提示

  • 该App后台具备多重反作弊检测,直接模拟请求可能被封禁。
  • 建议在隔离环境中测试,避免影响真实账号。

7. 扩展研究方向

  • 分析SO文件中的加密逻辑(可能涉及白盒加密)。
  • 探索Hook框架的对抗方案(如Frida脚本绕过检测)。
  • 研究人脸识别接口的调用协议。

免责声明:本文内容仅限技术研讨,任何滥用行为与作者无关。

某某校园 App 协议与逆向分析教学文档 1. 概述 本教学文档基于对“某某校园”App的逆向分析,重点解析其安全机制、通信协议及核心功能接口。该App采用了多层次的反作弊(anti-cheat)防护策略,包括环境检测、代码保护及通信加密等。 注意 :本文档仅用于安全研究与学习目的,严禁用于非法活动。 2. 反作弊机制分析 新版“某某校园”App集成了以下反作弊检测功能: 多开环境检测 :防止应用在多开分身环境中运行。 模拟器/虚拟机检测 :识别是否在模拟器(如Android Studio AVD)或虚拟机中运行。 SO注入检测 :监控动态链接库是否被非法注入。 Hook框架检测 :检测Xposed、Frida等Hook工具。 调试器附加检测 :防止动态调试。 SSL Pinning :严格校验服务器证书,阻断中间人抓包。 3. 抓包与绕过策略 3.1 SSL Pinning 绕过 方法 :使用旧版本APK(未强化SSL Pinning)或重写版本检测API。 工具推荐 :Reqable(支持Python脚本、类似Fiddler的局域网抓包及API测试功能)。 3.2 抓包发现 接口返回数据均为加密格式。 请求头中包含动态生成的 sign 字段,用于签名验证。 4. 逆向分析流程 4.1 脱壳与解包 App使用 网易易盾 加固。 脱壳平台: https://56.al (支持哈希匹配,已有脱壳记录时可秒脱)。 脱壳后使用JADX等工具分析DEX文件。 4.2 定位关键代码 搜索添加 Sign 请求头的代码段。 跟踪签名生成函数,逆向调用链以理解完整流程。 4.3 密钥提取 密钥生成逻辑中通过 x7.d.b() 判断运行环境(初始值为9)。 示例解密密钥: F44B0282BEA83557 。 通过跟踪相关函数获取加密所需第二密钥及配套参数。 4.4 算法复现(Python) 根据逆向结果,核心算法包括: 动态签名生成(基于时间戳、设备信息等)。 请求数据加密(AES或自定义算法)。 响应数据解密。 5. 核心接口解析 5.1 阳光跑相关接口 querySchoolFences 功能:查询电子围栏信息(经纬度范围、开放时间、打卡点数量、人脸识别要求等)。 围栏数据为包含至少3个经纬度点的数组。 checkSunRunConfig 功能:检查跑步计划配置(打卡方式、围栏规则、人脸识别等)。 querySunRunAbstractInfoV2 功能:获取阳光跑计划摘要及学校规定(如禁止连接WiFi跑步)。 uploadRunRecord 功能:每15秒上报一次数据(包含5个采样点,每3秒采集一次)。 数据内容:围栏距离、经纬度、卫星信息等。 finishSunRun 功能:结束跑步并上传最终数据(步数、距离、轨迹、配速),用于成绩计算。 异常处理接口 queryUnFinishRun :查询未完成的运动记录。 abnormalFinishSunRun :终止异常运动(数据不被记录)。 5.2 反作弊后台逻辑 服务器通过上传的数据(如轨迹连续性、速度合理性)进行作弊判定。 高频测试可能触发风控,需谨慎模拟。 6. 技术总结 6.1 逆向要点 优先绕过环境检测(修改环境判断函数返回值)。 定位签名算法需跟踪网络库初始化代码。 密钥可能硬编码或动态生成,需结合运行时逻辑分析。 6.2 风险提示 该App后台具备多重反作弊检测,直接模拟请求可能被封禁。 建议在隔离环境中测试,避免影响真实账号。 7. 扩展研究方向 分析SO文件中的加密逻辑(可能涉及白盒加密)。 探索Hook框架的对抗方案(如Frida脚本绕过检测)。 研究人脸识别接口的调用协议。 免责声明 :本文内容仅限技术研讨,任何滥用行为与作者无关。