本文源于我近期的一次公司内部分享,通过逆向某款 APP 来介绍逆向过程。由于仅作为学习用途,APP 的相关信息会被遮盖,敬请理解。
关于逆向
逆向——包括但不限于通过反编译、Hook 等手段,来解析一些功能的实现过程。
逆向在很多领域都有应用,比如如今爬虫技术已经遍地走,甚至不用写代码都可以爬取数据,导致前端开发的反爬意识也逐步提升。因此 JS、Android 等领域的逆向,已经成为爬虫开发者必备的技能之一。
本文介绍的是最典型常见的传参加密,在很多应用接口都能见到,如果我们逆向解析出加密过程,就可以模拟出相同的密文,得到后端接口的“认可”。
逆向的准备
这里介绍下关于 Android 的逆向准备:
- Android 真机或模拟器(最好是真机)
- 安装 Android 5.0 或 6.0 版本
- Fiddler、Charles 等抓包工具
- Jadx、ApkTool 等反编译工具
- dumpDex、FDex2 等脱壳工具
- Java、Android 开发基础知识
- Xposed 框架开发基础知识
逆向步骤
介绍一下本文逆向的步骤:
当然,用三步概括,看上去像“把大象塞进冰箱分为几步”。逆向作为一项与应用开发者对抗的网络安全技术,其手段花样多端,有时甚至不需要代码也可以完成逆向,所以这个概括仅对应文中的遇到情况。
定位目标
本次逆向是针对某款 APP 的订单接口,首先我们使用抓包工具捕获订单列表请求,下图为 Charles 界面: