一、逆向工程整体认知(先把路走对)

逆向 ≠ 破解

逆向的本质是 理解行为、还原逻辑、分析协议、验证假设,而不是“去掉校验”。

常见目标:

  • 理解 App / 程序 如何工作

  • 还原 算法 / 协议 / 风控点

  • 重现 接口调用

  • 定位 关键判断逻辑

  • 验证 数据来源与可信度


二、逆向核心分类(你必须全部见过)

类型

重点

静态逆向

看代码结构、函数逻辑

动态逆向

跑起来,看真实行为

协议逆向

分析网络请求

算法逆向

hash / sign / 加密

风控逆向

设备指纹、反作弊

对抗逆向

反调试 / 反 Hook


三、静态逆向(最基础,但最容易走偏)

1️⃣ 常见工具

  • Android:Jadx / JADX-GUI / JADX-CLI

  • iOS:Hopper / IDA / class-dump

  • Native:IDA / Ghidra


2️⃣ 静态逆向最重要的 5 个细节

✅ 不要从入口开始看

入口 90% 是壳、路由、代理。

正确顺序:

  1. 找网络请求

  2. 找 sign 生成

  3. 反推调用链


✅ 不要被函数名骗

boolean check()
boolean verify()
boolean a()

名字几乎不可信,看:

  • 参数

  • 返回值

  • 调用位置


✅ 少看 UI,多看数据流

UI 只是壳:

  • 真正有价值的是:

    • JSON 构造

    • Map 拼装

    • Header 填充


✅ 注意「工具人函数」

常见:

  • encode

  • wrap

  • build

  • process

  • transform

这些函数 往往藏着核心算法


✅ 看 call chain,不要看单函数

逆向是:

调用关系 > 单个函数

四、动态逆向(决定你能走多远)

1️⃣ 动态逆向目标

  • 真实参数

  • 真实返回

  • 真实分支是否执行


2️⃣ Hook 重点对象(不是乱 Hook)

Android 重点 Hook:

  • OkHttp / Retrofit

  • Request / Response

  • Interceptor

  • Header 构造函数

  • sign 方法

iOS 重点 Hook:

  • NSURLSession

  • AFNetworking

  • 自定义 sign 类


3️⃣ 动态逆向黄金技巧

🔥 Hook = 打印 + 修改 + 验证

不是只打印:

args[0] = "fake";
return origin;

看系统是否接受。


🔥 对比法

  • 正常请求 vs 异常请求

  • 登录前 vs 登录后

  • 新设备 vs 老设备


🔥 断点比 Hook 更重要(Native)

  • strcmp

  • memcmp

  • AES / RSA / MD5


五、协议逆向(最容易出成果)

1️⃣ 先抓包,再逆向

永远不要反过来。

关注点:

  • URL

  • method

  • header

  • body

  • 时间戳变化


2️⃣ 常见 sign 构造套路

模板一:拼接 + hash

key1=value1&key2=value2&secret=xxx
↓
md5 / sha1

模板二:JSON + base64

json → gzip → base64

模板三:多阶段

step1 → step2 → step3

3️⃣ 易忽略的细节(非常重要)

  • 参数 排序

  • null 是否参与

  • URL encode 次数

  • 时间戳精度(秒 / 毫秒)

  • sign 是否包含 body hash


六、算法逆向(别一上来就硬啃)

常见算法不是难点

难的是:

  • 上下文

  • 数据来源

  • 输入变化

你真正要找的是:

谁调用它?
输入从哪里来?
结果给了谁?

典型误区

❌ “我已经还原了 MD5,怎么还不对?”

→ 因为你 漏了参数 / 顺序 / 编码


七、风控逆向(真正的分水岭)

常见风控点

  • 设备指纹

  • 安装列表

  • 传感器

  • IP / 地区

  • 行为节奏


风控逆向三阶段

1️⃣ 识别:哪里参与了风控
2️⃣ 隔离:哪些参数影响结果
3️⃣ 重放:能否伪造 / 固定


重点细节

  • 风控值通常 不在 sign 里

  • 很多在 header / hidden param

  • 有的通过 native 算


八、反逆向与对抗(避坑必看)

常见反逆向

  • 反调试

  • 反 Hook

  • root / 越狱检测

  • Frida 检测


核心原则

不要对抗全部,只绕关键点

你不是要“完全破解 App”,
你是要 稳定复现你关心的功能


九、逆向高手的思维方式(最重要)

🧠 逆向不是找答案,是验证假设

每一步都在问:

  • 如果我改这个,会发生什么?

  • 这个值是否必须?

  • 是否有兜底逻辑?


🧠 永远用「最小修改原则」

  • 改一个点

  • 验证结果

  • 再继续


十、给你一条非常实用的学习路线(实战向)

  1. 抓包 → 看差异

  2. Hook 网络层

  3. 定位 sign 生成点

  4. 验证参数影响

  5. Python / Java 重现

  6. 稳定跑一周