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逆向, 云资产清单, 大语言模型, 安全防护, 实时处理, 密码学, 手动系统调用, 抖音签名, 汇编语言分析, 移动应用安全, 网络安全, 逆向工具, 逆向工程, 隐私保护, 风控对抗