yasminefolo/reverse-engineering-is-over
GitHub: yasminefolo/reverse-engineering-is-over
本项目通过使用 Claude Opus 在 30 天内成功还原抖音 v38.1.0 签名库中 6/7 个自定义 HTTP 签名参数的案例,证明了 LLM 已从根本上颠覆了逆向工程作为高门槛专业技能的传统格局。
Stars: 106 | Forks: 1
# 逆向工程已终结
[中文版本](README_zh.md)
## 摘要
本文提出了一项影响深远的命题:**大型语言模型 (LLMs) 的出现,从根本上终结了逆向工程作为一个高门槛专业学科的时代。** 作者在没有深厚密码学背景的情况下,全程依赖 LLMs,在短短一个月内成功重构了一款商业 Android 应用程序的核心签名系统——该系统受工业级防御机制保护。结果表明,逆向分析的核心瓶颈已从*人类知识积累*转移到了 *token 消耗*。这种转变对移动应用程序安全领域具有深远的结构性影响。
## I. 核心命题
AI 的模式匹配能力在速度和规模上都超越了人类认知,彻底大众化了曾经需要数年系统学习才能掌握的逆向工程技能。这不是一次渐进式的工具升级——这是一次**范式断裂**。
逆向工程的传统壁垒是众所周知的:对汇编语言的深度熟练掌握、对底层操作系统内部的精通、识别密码原语的能力、长期积累的工具链,以及只有在分析大量样本后才能获得的经验直觉。培养一名合格的逆向工程师通常需要三到五年的持续努力。
在面对充足的 token 和合理的 AI 协作方法论时,这些壁垒**已几乎不复存在**。
## II. 实践中的 AI 辅助逆向分析
### 2.1 研究目标与保护机制
研究目标是某主流短视频平台 Android 客户端中嵌入的原生签名库。其保护机制代表了当前商业移动软件安全的天花板。
**静态保护层**
| 机制 | 描述 |
|:----------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------------------- |
| OLLVM 控制流平坦化 | 将每个函数的控制流转换为 `while-switch` 分发器结构,抹除所有可读的分支逻辑。 |
| 代码虚拟化 (VM) | 核心算法被编译为专有的字节码格式,并由私有虚拟机执行,彻底阻断了静态反编译的可能性。 |
**动态保护层**
| 机制 | 描述 |
|:---------------------- |:---------------------------------------------------------------------------------------- |
| 完整性验证 | 运行时检查 Dex 层和 Native 层的完整性,以检测内存中的补丁。 |
| 反调试 | 检测 `ptrace` 附加、调试器存在以及时间异常等。 |
**算法层**
签名系统由 7 个自定义 HTTP 参数组成。其底层密码原语包括:SPECK-128/256 分组密码、SM3(中国国家标准)哈希、GF(2⁸) 仿射变换、ARX 海绵置换、CRC64-Jones 以及 Broken-RC4 变体。
**总体评估:** 该目标位于**移动应用逆向工程的最高梯队**,使其成为评估 AI 辅助分析的理想压力测试对象。
### 2.2 突破保护机制的方法论
面对这些防御措施,分析工作遵循了系统化、分层的策略。
**动态分析优先**
在 OLLVM 和 VM 混淆的双重压迫下,静态分析几乎毫无用处。核心策略是完全跳过静态复杂性,直接在运行时捕获数据:在目标函数的输入和输出处放置 Frida hook,将黑盒例程转换为可观察的数据流。随后,AI 从这些数据流中归纳和推断出结构模式。
**分层剥离**
保护机制被逐层拆除:
1. **环境准备** — 使用 Magisk + Zygisk 隐藏 root 权限;注入 `frida-gadget` 以规避进程名检测;修补 SO 文件以绕过 SSL pinning。
2. **VM 分析** — 对字节码 VM 中的每个操作码进行语义标记,通过大量差异化输入构建处理程序行为映射表。
3. **算法重构** — 对于每个被修改的密码原语,向 AI 提供差异测试向量,由其推断出与原算法精确的偏差。
**假设驱动的实验循环**
```
Known Information → Form Hypothesis → Write Frida Script
→ Collect Runtime Data → Verify or Refute → Update Known Information → Repeat
```
每次迭代的核心是设计具有区分度的测试输入,迫使目标函数在每次运行中揭示尽可能多的结构信息。这个过程机械化、简单且极其有效。
### 2.3 AI 在工作流中的角色
| 阶段 | 传统方法 | 在 AI 辅助下 |
|:-------------------------------------- |:--------------------------------------------------- |:----------------------------------------------------------------- |
| 识别被修改的密码原语 | 手动常量比对——耗时数天 | 提供差异向量;立即进行推断 |
| 理解混淆后的控制流 | 手动追踪 `while-switch` 逻辑——耗时数小时 | 自然语言语义解释 |
| VM 操作码语义标记 | 逐条指令的手动分析 | 带有自动模式归纳的批量标记 |
| 编写验证脚本 | 需要密码库和 Frida API 专业知识 | 描述目标行为;直接生成可运行代码 |
| 差异数据分析 | 依赖直觉的手动比对 | 带有自动规则归纳的批量比对 |
在整个实验过程中,最常用的 prompt 仅由两个汉字组成——文言文中的:**“续之”。** (`续之`,在文言文中意为“继续”)。
### 2.4 实验结果
- **第 1-2 周:** 完全重构了五个短参数;通过了端到端的实时验证 (30/30)。
- **第 3-4 周:** 基本完成了第 6 个复合参数的离线分析(329 字节,三阶段结构,结合了 Broken-RC4、ARX 海绵和 SPECK 密钥派生)。
- **剩余工作:** 第 6 个参数的实时集成以及第 7 个参数的分析。预计两者均属重复性工作,不存在新的技术障碍。
### 2.5 记录的局限性
在第 6 个参数的后期集成阶段,出现了明显的**上下文丢失和幻觉**:模型忘记了之前已确认的结论,并从错误的前提继续推理,产生了无效的迭代。根本原因在于结构复杂性——两周的分析日志已超出了单个上下文窗口的容量,且在关键里程碑处未归档结构化的检查点。这反映的是实验纪律上的缺陷,而非 LLM 的根本局限性。
**经验性结论:** 在每个里程碑处,应立即生成可复用的文档和经过验证的代码。这一习惯能大幅压缩后期集成的成本,并且是任何长周期 AI 辅助研究项目的基石方法论。
## III. 对移动应用程序安全的影响
本实验的核心意义不在于逆向了某个特定平台。而是**成本方程的根本性重构**。
决定逆向分析成功与否的变量已从“分析师积累的专业知识”转变为:
```
Success Rate ≈ f(AI Model Capability × Methodology × Token Investment)
```
分析师的专业背景已降级为次要因素。其影响是严峻的:
- 过去需要数年积累的逆向工程能力,现在可以**由任何具备基本方法论意识的研究人员复现**,代价仅仅是 tokens。
- 混淆和 VM 保护的防御回报正在迅速衰减——AI 几乎对复杂度不敏感;414 个 VM 处理程序只不过意味着更大的 token 预算。
- 移动应用安全领域的攻防成本比正在发生结构性的倾斜,且急剧向攻击方倾斜。
## IV. 给各利益相关者的信息
### 致 AI 公司
大型语言模型正成为安全研究的核心基础设施——这是一个积极的发展。安全研究的大众化有助于推动整个行业防御能力的系统性提升。
建议 AI 公司建立稳健的**安全研究人员认证途径**,使具有合法目的的研究人员能在清晰的合规框架内运作。能力与责任必须同步提升:更强大的模型需要更明确的使用指南来规范研究用途,而不是简单地提高访问门槛。
### 致软件与平台公司
本实验表明,以混淆复杂性为前提的客户端保护策略正逼近零边际效用。具体建议如下:
- **将信任锚点从客户端转移到服务器:** 动态验证逻辑、服务器端行为风险控制以及请求上下文绑定。
- **基于客户端已被完全逆向的假设进行设计**,而不是依赖任何“黑盒”的持续不透明性。
- **重新评估 VM 和 OLLVM 投资的投资回报率:** 在 AI 辅助分析面前,这些保护措施所换取的时间成本价值已大幅缩水。
- **建立负责任的披露机制:** 主动与安全研究社区接触,将外部发现转化为防御态势的持续改进。
### 致安全研究人员
逆向工程的技术壁垒正在消融,但**安全研究方法论、道德判断和专业洞察力**的价值却在成反比地上升。能力的大众化意味着,未来区分研究人员的将不再是我们*是否*能胜任这项工作——而是我们*如何*开展工作以及*为了什么目的*。
## 结论
逆向工程——这个定义了数十年移动安全领域格局的高门槛专业学科——正被 LLM 系统性地解构。本文记录的并非一次普通的安全研究。这是一个处于历史拐点上的技术案例研究:**当充足的 tokens 遇上合理的方法论时,工业级的混淆就会变成一种可量化的、可耗尽的资源。**
逆向工程已终结。
对于防御者来说,这是一个迟来的警钟。
对于研究人员来说,这是一扇向所有人敞开的大门。
## 联系方式
如需获取完整技术报告或探讨相关研究,请联系:
📧 `yasmine_folo@proton.me`
### 后记
本实验的核心工作几乎全部由 AI 完成,包括代码生成、流程总结和文档编写。在随后的审查中,我确实发现了相当多的错误,其中大部分源于模型幻觉。例如,在 `final_report` 中,关于 Medusa 参数 `mid-e` 的部分实际上已经进行了相当深入的追踪和分析,但这并未反映在 AI 生成的总结报告中。相关细节可在 `medusa_grand_summary_v31m.md` 文档中找到。我相信类似的问题可能仍然存在,希望大家予以谅解。
由于实验数量相当庞大,完全依赖人工整理将会极其繁琐。尽管如此,我相信本实验旨在证明的核心观点已经足够清晰:AI 正在深刻地改变逆向工程的运作方式。
当然,本实验的成功也依赖于绕过 AI 的安全机制。绕过策略本身并不特别复杂;其核心思想是“长上下文对话 + 文言文提示词”。对于复杂目标,长对话几乎是不可避免的,而使用文言文编写提示词可以有效规避 Claude 的安全检测。在我上传的文档中也可以看到使用文言文的痕迹。
关于实验环境的补充说明:本实验使用了 Anthropic 的 Opus 4.6(在 Max 5x 订阅计划下),总花费仅约 100 美元。目标是在国际上被称为 TikTok 的应用程序的中国版本,即抖音 38.1.0。在实验期间,既没有使用 Skills 也没有使用 Claude Code;一切均直接通过网页界面完成。我个人认为网页界面提供了更透明且可控的工作流,并且已经足以满足实验需求,因此无需额外使用 Claude Code。换言之,整个实验所需的条件相当简单,但最终结果却依然令人印象深刻。
标签:AI安全, AI辅助逆向, Android安全, App签名算法还原, Chat Copilot, DLL 劫持, HTTP签名参数, SO库逆向, TikTok逆向, 云资产清单, 大语言模型, 安全防护, 实时处理, 密码学, 手动系统调用, 抖音签名, 汇编语言分析, 移动应用安全, 网络安全, 逆向工具, 逆向工程, 隐私保护, 风控对抗