1. 移动端逆向工程概述
移动端逆向工程(Mobile Reverse Engineering)是指通过分析移动应用程序的二进制代码、网络通信协议、数据存储结构等,还原其内部实现逻辑的技术过程。在航空、金融、电商等行业,这项技术常被用于安全审计、竞品分析、接口研究等合法用途。
东方航空作为国内三大航空公司之一,其移动端应用承载了机票预订、值机选座、航班动态等核心业务功能。对m端(移动网页版)进行逆向分析,可以帮助我们理解其前端架构设计、接口调用逻辑以及数据加密机制。
2. 准备工作与环境搭建
2.1 基础工具准备
进行移动端逆向需要准备以下工具链:
- 抓包工具:Charles/Fiddler(HTTP/HTTPS流量分析)
- 调试工具:Chrome DevTools(网页元素审查)
- 反编译工具:JADX/GDA(APK逆向)
- 脚本环境:Python 3 + Requests库(接口模拟)
- 加解密工具:CyberChef(算法分析)
提示:建议使用Android模拟器配合Proxyman进行移动端流量捕获,可以绕过部分证书绑定限制。
2.2 目标站点分析
东方航空m端通常采用混合开发模式,核心流程通过H5实现。通过浏览器访问m端地址后,我们需要重点关注:
- 主文档的加载顺序和资源依赖
- XHR/fetch请求的调用链路
- 关键业务接口的参数构造方式
- 动态生成的加密参数(如h5st等)
3. 关键逆向技术点解析
3.1 接口签名机制破解
现代移动端应用普遍采用接口签名防止篡改,东方航空m端常见的防护手段包括:
- 参数排序加密:将所有参数按字母序排列后拼接加密
- 时间戳校验:请求必须携带有效时间戳
- 设备指纹:通过UA、屏幕分辨率等生成唯一标识
通过拦截登录流程的请求,可以观察到典型的签名参数:
{ "flightNo": "MU1234", "depDate": "20240520", "_timestamp": 1716180000, "_sign": "a1b2c3d4e5...", "h5st": "xyz123..." }3.2 h5st参数逆向
h5st是近期移动端常见的新型反爬机制,其生成逻辑通常包含:
- 环境信息采集(浏览器指纹、操作行为等)
- 密码学算法混淆(AES+RSA组合)
- 时效性控制(短时有效)
通过Hook浏览器加密函数可以定位关键代码段:
// 典型h5st生成代码结构 function generateH5ST() { const t = Date.now(); const e = collectEnvData(); const n = crypto.createHash('md5') .update(t + e + '固定盐值') .digest('hex'); return Base64.encode(n.slice(0,16)); }3.3 数据加密方案分析
东方航空核心接口响应通常采用多层加密:
- 传输层:HTTPS + 自定义证书校验
- 业务层:敏感字段单独加密(如价格、座位数)
- 展示层:动态字体映射(防止爬虫直接获取文本)
解密示例(Python实现):
import hashlib def decrypt_seat_data(encrypted_str): key = hashlib.md5(b'secret_salt').hexdigest() # AES解密实现... return plain_text4. 完整逆向实战流程
4.1 登录流程逆向
- 请求拦截:捕获登录接口
/api/login的请求 - 参数分析:定位username/password的加密方式
- 验证码破解:分析图形验证码的生成和校验逻辑
- 会话维持:解析返回的token刷新机制
典型登录参数加密流程:
graph TD A[明文密码] --> B[MD5哈希] B --> C[拼接时间戳] C --> D[RSA公钥加密] D --> E[Base64编码]4.2 航班查询接口逆向
- 拦截
/api/flight/search请求 - 分析查询条件的结构映射:
{ "depCity": "SHA", "arrCity": "PEK", "date": "2024-05-20", "adultNum": 1, "childNum": 0 } - 解密返回的航班数据:
- 价格字段采用位移异或加密
- 余票信息使用自定义编码
4.3 订单生成过程分析
- 座位锁定接口的并发控制机制
- 价格校验的防篡改设计
- 支付环节的风控策略(如设备指纹比对)
5. 高级对抗技术
5.1 反调试绕过技巧
现代m端常采用以下防护措施:
- 调试检测:通过
window.console对象变化触发异常 - 代码混淆:使用Webpack打包+变量名压缩
- 环境检测:识别开发者工具开启状态
绕过方案示例:
// 禁用调试检测 Object.defineProperty(window, 'console', { get: () => null });5.2 动态加载对抗
东方航空m端采用的技术:
- 代码分片:按需加载业务模块
- 接口动态注册:每次启动时更新接口路径
- 逻辑热更新:通过WebSocket推送新规则
应对策略:
- 使用MitmProxy记录完整会话
- 分析Webpack的模块加载映射表
- 提取接口路由生成算法
6. 法律合规与伦理边界
在进行任何逆向工程前必须注意:
- 严格遵守《网络安全法》相关规定
- 仅用于学习研究和授权测试
- 不破解、不传播敏感业务数据
- 不干扰正常系统运行
建议的操作规范:
- 限制请求频率(<10次/分钟)
- 使用测试账号而非生产环境
- 避免逆向支付等核心敏感功能
7. 技术演进趋势
移动端安全防护正在向以下方向发展:
- WebAssembly应用:关键逻辑用wasm实现提高逆向难度
- 行为验证:通过用户操作轨迹识别机器行为
- 硬件级防护:TEE可信执行环境的应用
应对建议:
- 持续跟踪最新反逆向技术
- 建立自动化分析流水线
- 结合AI进行模式识别
在实际操作中发现,东方航空m端的加密策略每季度会有小幅更新,特别是在大型促销活动前会增强风控措施。建议定期验证已有方案的有效性,并保持代码的可维护性以适应变化。对于关键业务接口,最好建立参数生成算法的单元测试套件,确保逆向逻辑的持续可用性。