零散逆向代码重建为可编译工程
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md 将规范名 @user_814dbe54/project-rebuild-skill 的该技能安装到当前 AI 助手中。
技能介绍
要解决的问题
逆向工作产出的代码往往不是一份干净仓库:你拿到的是按函数切散的片段、C 与 Python 混写的伪代码、缺头文件少声明的函数体,甚至夹着一段 ASM 内联。这些碎片彼此引用却对不上接口,构建系统更是无从谈起。手工整理很容易陷入「改一个符号引发十个错误」的循环,最后连最小的可编译子集都拼不出来。
project-rebuild-skill 要处理的就是这个从碎片到工程的中间层:把盘点、接口推导、构建选型、骨架搭建、编译纠错串成一条可重复的流水线,而不是靠一次性灵光一现。
核心能力与工作流程
技能按六个阶段推进:
- 碎片盘点与分类:按语言、模块、依赖关系聚类碎片,记录每个片段的来源,并标注置信度与缺口。
- 接口与依赖推导:提取外部调用,推导缺失的函数签名与类型,产出
deps.dot依赖图。 - 构建系统选型:按目标语言推荐方案,如 C/C++ 用
CMake,混合语言则分层构建再加桥接封装。 - 骨架搭建:建立
src/、include/目录,生成构建配置与入口,把碎片归位。 - 编译纠错迭代:先跑首次编译收集错误清单,补
stub、修正类型签名,循环直至通过。 - 运行验证与交付:产出
BUILD_REPORT.md记录重建率与未还原清单。
适用边界与注意点
几个值得写在最前面的前提:
- 合法性:只用于自有或已获授权代码的恢复重建。
- Stub 管理:未知依赖以声明或桩函数形式补齐,必须标注来源。
- 行为验证:编译通过不等于行为正确,需用已知输入对比输出。
- 渐进整合:先让最小子集编译通过再逐步扩大,避免一次性大爆炸式重构。
使用场景
- 手上只有反编译出的零散 C 函数和内联汇编,需要把它们归位成带 CMake 的多模块工程并编译通过
- 反编译结果里有 C 伪代码和 Python 脚本混在一起,需要统一成同一种语言的等价实现并跑通构建
- 函数体引用了未知符号和库函数,头文件缺失,需要推导签名、补 stub 后链接成完整可运行程序
- 逆向完的 Java 与 JNI 混合代码没有构建配置,需要选型 Gradle、分层隔离并搭出可编译的骨架
适合人员
- 做二进制分析的安全研究员,需要把授权目标的反编译碎片整理成能编译、能跑行为验证的代码树
- 逆向工具链输出的代码缺接口缺声明,需要有人把这些依赖关系推导出来并补齐构建配置
- 研究恶意软件或闭源组件的工程师,拿到碎片后要产出可复现的工程结构和重建报告
- 移植或修复老旧闭源库的开发者,需要按语言和模块重排逆向得到的函数片段并跑通编译