Windows 软件逆向
开发是先写代码再编译成软件,逆向反过来:到手的只有软件,要从二进制推回它在做什么、改它的行为、或判断某个需求靠改客户端到底能不能成。这个 skill 面向 Windows x86/x64 的本地软件(PE 文件:.exe / .dll / .sys / .msi)。
它最要紧的一点:被写成带门禁的流程,不是建议。因为观察到的失败模式不是无知,是模型读完全文、表示同意、然后仍然凭第一直觉推理 —— 所以每条规则都是动作加通过判据,计划和规则冲突时规则赢,直到有证据推翻。
这一页是概要地图,不是操作手册。 它讲清这个 skill 怎么把问题分类、靠什么纪律收口;真正动手的逐层技术细节和脚本在上游。
它把逆向分成哪些情况
动手前先沿三个轴把目标归位,每个轴都换一套做法,归错不会报错 —— 它产出一个能跑、却做错事的产物。
按目标是什么 —— 决定整条工具链。
| 目标 | 换成什么活 |
|---|---|
| 原生 PE | 反汇编、字节补丁、特征码 |
| 托管 .NET | CIL 加元数据,十六进制改了没用,走托管工具链 |
| 运行时打包(Unity IL2CPP、打包的 Python、Flutter/Dart) | 名字和代码常在另一个文件,先认打包器和版本 |
| 加壳 / 受保护 | 先脱壳才谈读代码,有的还被代码虚拟化 |
| 驱动 / 内核 | 用户态工具到边界就停 |
按行为住在哪一层 —— 决定本地改动能不能成。 客户端逻辑(改得动)· 客户端只负责渲染的服务端数据(改了只是看起来成)· 服务端权威的决定(改不动)。这是这里最贵的错误转向,早点定。
按交付物是什么 —— 决定怎么验证。 磁盘上打补丁的文件 · 内存里的实时补丁 · 独立注册机 · 一份分析报告 —— 四个问题、四套验证,其中一个常常才是诚实的答案。
覆盖的方法层:初筛、等长字节补丁、特征码/AOB、调试与硬件断点、注入与 hook、转储与修复、反分析对抗、授权机制归类、算法恢复、符号执行与脱虚拟化,以及软件工具链替代不了的硬件观测层(指令追踪、硬件断点、hypervisor 辅助)。
它要解决的问题,和收口的纪律
目标只有一句:拿到一个验证过的产物,或一个验证过的结论 —— 避开那一类失败:文件能编、能加载、能跑,然后做错了事。崩溃会自己喊,这类不会,所以它靠一套纪律硬收口:
- 先把终点写成一句别人能检验的话,每个检查点重读
- 五道门按序清:交付物形态、宿主能力、代码在哪、基线对照、执行前隔离 —— 每道是动作加判据,「我懂这个思路」不算通过
- 每条断言带标签:
observed(有命令和输出)/inferred(推理)/unverified;缺的覆盖是unknown,不是「不存在」 - 一次只改一个变量,留一个对照(没改过的原件);不能解释的症状就是停止信号;同一形状失败两次,回去重新分类,不试第三个变体
- 「完成」有六条(产物带哈希、在指定环境演练过、改的行为验证确实变了、动过的还能用、残留局限带成因、没留在损坏状态);日志干净不算完成
边界
面向你自己的软件、你被授权分析的样本、竞赛沙箱,仅供学习、研究与授权测试。破服务端授权、通用自动脱虚拟化、把「攻破某个具名商业保护」当产品级宣称、对没测过的 Windows 版本作保证 —— 都不在范围,这个 skill 的写法是如实说明并停下。
这里只有地图,引擎在上游
分类和纪律在这页读就够;要真跑(探宿主、读 PE、打补丁、特征码),上游那套才是引擎 —— 约 40 篇逐层技术 reference、17 个脚本约 9000 行、整套测试与 CI 都在那里,这页一样没收。
- 克隆
https://codeberg.org/reverse-skill-lab/exe-reverse,skill 在skills/exe-reverse/;脚本在裸 Python 3.10+ 上即可运行 - 最便宜的第一条命令是
python scripts/doctor.py:一次回答三件事 —— 这台机器支持哪些能力、每个脚本能否原样运行、哪些宿主事实会让实验静默失效;scripts/hwprobe.py是更深的硬件级探测 - 脚本在本地跑第三方代码,执行前让用户知情;工具不在
PATH用EXEREV_TOOLS指路
维护记录:从哪来、改了什么。正常使用不用看,出问题再看。