---
description: "逆向 Windows 本地软件(.exe/.dll/.sys/.msi)、定位授权校验、给二进制打补丁又不打坏、判断「只改客户端能不能成」时用:一页概要讲清这个 skill 把逆向分成哪些情况、靠什么纪律收口;逐层操作和脚本在上游(吸纳自 reverse-skill-lab/exe-reverse)"
---

# Windows 软件逆向

开发是先写代码再编译成软件,逆向反过来:到手的只有软件,要从二进制推回它在做什么、改它的行为、或判断某个需求靠改客户端到底能不能成。这个 skill 面向 **Windows x86/x64 的本地软件**(PE 文件:`.exe` / `.dll` / `.sys` / `.msi`)。

它最要紧的一点:被写成**带门禁的流程,不是建议**。因为观察到的失败模式不是无知,是模型读完全文、表示同意、然后仍然凭第一直觉推理 —— 所以每条规则都是动作加通过判据,计划和规则冲突时规则赢,直到有证据推翻。

**这一页是概要地图,不是操作手册。** 它讲清这个 skill 怎么把问题分类、靠什么纪律收口;真正动手的逐层技术细节和脚本[在上游](#upstream)。

## 它把逆向分成哪些情况 { #cases }

动手前先沿三个轴把目标归位,每个轴都换一套做法,归错不会报错 —— 它产出一个能跑、却做错事的产物。

**按目标是什么 —— 决定整条工具链。**

| 目标 | 换成什么活 |
|---|---|
| 原生 PE | 反汇编、字节补丁、特征码 |
| 托管 .NET | CIL 加元数据,十六进制改了没用,走托管工具链 |
| 运行时打包(Unity IL2CPP、打包的 Python、Flutter/Dart) | 名字和代码常在另一个文件,先认打包器和版本 |
| 加壳 / 受保护 | 先脱壳才谈读代码,有的还被代码虚拟化 |
| 驱动 / 内核 | 用户态工具到边界就停 |

**按行为住在哪一层 —— 决定本地改动能不能成。** 客户端逻辑(改得动)· 客户端只负责渲染的服务端数据(改了只是看起来成)· 服务端权威的决定(改不动)。这是这里最贵的错误转向,早点定。

**按交付物是什么 —— 决定怎么验证。** 磁盘上打补丁的文件 · 内存里的实时补丁 · 独立注册机 · 一份分析报告 —— 四个问题、四套验证,其中一个常常才是诚实的答案。

覆盖的方法层:初筛、等长字节补丁、特征码/AOB、调试与硬件断点、注入与 hook、转储与修复、反分析对抗、授权机制归类、算法恢复、符号执行与脱虚拟化,以及软件工具链替代不了的硬件观测层(指令追踪、硬件断点、hypervisor 辅助)。

## 它要解决的问题,和收口的纪律 { #discipline }

目标只有一句:**拿到一个验证过的产物,或一个验证过的结论** —— 避开那一类失败:文件能编、能加载、能跑,然后做错了事。崩溃会自己喊,这类不会,所以它靠一套纪律硬收口:

- **先把终点写成一句别人能检验的话**,每个检查点重读
- **五道门按序清**:交付物形态、宿主能力、代码在哪、基线对照、执行前隔离 —— 每道是动作加判据,「我懂这个思路」不算通过
- **每条断言带标签**:`observed`(有命令和输出)/ `inferred`(推理)/ `unverified`;缺的覆盖是 `unknown`,不是「不存在」
- **一次只改一个变量,留一个对照**(没改过的原件);**不能解释的症状就是停止信号**;**同一形状失败两次,回去重新分类**,不试第三个变体
- **「完成」有六条**(产物带哈希、在指定环境演练过、改的行为验证确实变了、动过的还能用、残留局限带成因、没留在损坏状态);日志干净不算完成

## 边界 { #scope }

面向**你自己的软件、你被授权分析的样本、竞赛沙箱**,仅供学习、研究与授权测试。破服务端授权、通用自动脱虚拟化、把「攻破某个具名商业保护」当产品级宣称、对没测过的 Windows 版本作保证 —— 都不在范围,这个 skill 的写法是如实说明并停下。

## 这里只有地图,引擎在上游 { #upstream }

分类和纪律在这页读就够;要真跑(探宿主、读 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` 指路

<div class="zx-no-copy" markdown>

---

维护记录:[从哪来、改了什么](../maintenance/skills/exe-reverse.md)。正常使用不用看,出问题再看。

</div>
