当前位置:首页 > 逆向工程 > 正文

逆向入门路线图:从 Cheat Engine 到 Ghidra 的九个环节,该按什么顺序走

约 5235 字 · 预计阅读 14 分钟
一句话总结:站里九篇逆向文章其实是一条路径的九个环节,顺序错了会反复卡在同一类问题上——正确顺序是先补 PE 结构这个地基,再用 Cheat Engine 拿到第一个正反馈,然后依次往结构还原、动态调试、脱壳、反编译、注入、反调试走,末了回头理解反作弊整个战场。

学逆向最常见的困境不是资料少,是资料太多而且没有顺序。

你可能今天看一段 CE 视频,明天读一篇脱壳文章,后天研究 Frida 脚本。每一篇都能看懂,但连不起来。等真遇到一个加了壳、有反调试、还在跑的程序,发现手上每样工具都摸过,但没有一样能用出来。

这就是顺序的价值。这篇把站里九篇逆向文章按学习路径重排,说明每一环解决什么问题、卡在哪、为什么必须排在那个位置。

前置:三样东西,缺一样都会反复卡

前置 到什么程度算够
C 语言能看懂指针、结构体、函数指针。逆向里 90% 的抽象都是这三样
汇编基础认识 20 条常用指令(mov/add/cmp/jmp/call/ret/push/pop/lea/test),不需要会写
Windows 内存模型知道什么是虚拟地址、什么是模块基址、为什么地址每次重启会变(ASLR)

不需要先学完操作系统原理。 这是我见过最大的时间浪费:有人花三个月啃内核书,然后发现自己连一个 EXE 的导入表都不会看。边做边补效率高得多。

三个阶段,九个环节

图 1:九个环节分三组,每组解决一类问题,组内顺序可以微调但组间不能跳

阶段一:地基(能读懂)

① PE 文件结构 — PE 文件结构入门

第一个环节,也最容易被跳过。PE 是 Windows 上所有 EXE 和 DLL 的容器格式,里面有节表、导入表、导出表、重定位表。

为什么必须第一个学?因为后面所有环节都在说这些词:RVA、文件偏移、导入表、节属性。不懂这些,你看到「在 .text 段下断点」这句话就只能照抄,遇到异常完全没法判断。

这一篇最关键的一个技能是 RVA 和文件偏移的换算。调试器里看到的地址和十六进制编辑器里看到的偏移不是一个东西,换算公式记不住,改文件永远改错地方。

② Cheat Engine 与数值搜索 — Cheat Engine 入门实战

这个环节的作用是给正反馈。第一次亲手把游戏里的血量从 100 改成 9999,那个瞬间会让人真正理解「内存里的值是可以被找到的」。

技术上是四步:首次扫描 → 变化后再扫 → 缩小候选 → 反向验证。末了会剩下几个地址,其中只有一个是真的。

但注意这一环的天花板很清楚:它只能找到「当前这个值」,不能告诉你是谁的。 而且每次重启程序,地址都会变。这就引出下一环。

③ 指针链与结构还原 — ReClass 结构体还原

从「一个地址」到「一个对象」。你找到的血量地址,其实是某个玩家结构体里的一个字段,偏移量是固定的。

ReClass 干的事就是让你按类型切开一块内存,像看结构体一样看它:前 4 字节是 int 血量,接着 12 字节是坐标,再往后是指向背包的指针。

这一环的核心认知是:偏移是稳的,地址是不稳的。 找到基址 + 偏移的链条,才算真正定位。这条认知后面每一环都会用到。

阶段二:分析(能回答这里发生了什么)

④ 动态调试 — x64dbg 入门

前三环都是「读」,这一环开始「看过程」。

x64dbg 里最重要的不是单步,是三个功能:断点、调用栈、「谁访问了这个地址」。第三个功能能直接回答一个困扰新手很久的问题:这个值到底是被哪条指令改的。

三种断点的区别必须分清:软件断点改指令字节(容易被自校验发现)、硬件断点用调试寄存器(只有四个槽位)、内存断点靠页保护(粒度粗但能抓写入)。选错断点类型,会让你以为程序没执行那段代码。

⑤ 加壳识别 — 加壳识别入门

真实世界的程序大多不是裸的。这一环教你判断:这个文件有没有加壳、加的什么壳、能不能脱。

三个判据:节表特征(UPX 的节名一眼就认出来)、熵值(加密壳的熵接近 8)、导入表(加壳后导入表往往只剩 LoadLibrary 和 GetProcAddress)。

为什么这一环排在调试之后?因为你得先会看正常的程序,才知道哪里不正常。 没调试过裸程序就学脱壳,等于没见过健康的人学看病。

⑥ 静态反编译 — Ghidra 入门

从汇编到伪代码。Ghidra 把二进制翻译成类 C 代码,让「读一个函数在干什么」从几小时缩短到几分钟。

这一环真正要学的是地址换算和误判识别。Ghidra 显示的地址是「运行地址」,跟文件里的偏移差一个映像基址,对不上就找不到位置。另外自动分析会出错:把数据当代码、把指针当整数、函数边界划错、结构体字段猜错。分不清哪些是反编译器的猜测、哪些是真实逻辑,就会照着错误结论往下走。

阶段三:对抗(能改、能绕、知道边界)

⑦ 动态注入与 hook — Frida 动态注入入门

前面都是「观察」,这一环开始「干预」。

FrIDA 能做三件事:改函数返回值、读函数参数、调用内部函数。这三件事组合起来,可以让一个程序的判断逻辑完全按你的意思走,而不用改它的文件。

技术门槛主要在环境:注入方式、版本 API 差异、脚本编码。逻辑本身不难,难在跑通。

⑧ 反调试识别 — 反调试手段识别

从这一环开始,对面会还手。

五类常见手段:系统标志(PEB 里的 BeingDebugged)、时间差检测(rdtsc 指令)、断点扫描(找 0xCC)、异常处理、结构检测(TLS 回调、父进程)。

排查顺序很重要:先看现象,是启动就退、还是断点不生效、还是跑一会儿崩。现象对应类别,类别里再找具体点。逐个试是最慢的做法。

⑨ 反作弊全景 — 反作弊机制全景

第九环要抬头看整个战场,而不是盯着某个技术点。

三层防线:句柄与调用层(打开进程、读写内存的记录)、行为统计层(角速度曲线、操作规律)、内核层(驱动级监控)。到了内核那一层,用户态工具基本没有对抗空间。

这一环的意义不是教你怎么攻,是告诉你边界在哪。 知道检测怎么工作,才知道哪些技术只能在靶场里用。

常见卡点,按命中率排

卡点 1:跳过 PE 直接学 CE。 表现是「会改数值但不知道怎么找基址」,一遇到重启就废。补 PE 结构,两三天就能补回来。

卡点 2:只学动态不学静态。 表现是「拿到加壳的程序完全无从下手」。动态调试需要能跑起来,加了壳的程序跑不到你想看的地方。

卡点 3:记偏移不记方法。 表现是程序一更新,昨天找到的偏移全废。要记的是「我怎么找到的」,不是「偏移是多少」。方法通用,偏移一次性。

卡点 4:不懂汇编硬啃伪代码。 表现是「Ghidra 反编译出来的代码看得懂每个字,看不懂在干什么」。伪代码的奇怪写法往往是某条汇编指令的直接翻译,不知道原始指令就理解不了为什么要这么写。

卡点 5:只在自己熟悉的一个环境里练。 换个编译器版本、换个系统、换个 32/64 位,全不会。多找几个不同类型的样本练,比在同一个程序上钻到很深更有用。

时间投入,说实话

阶段 到能用 说明
地基(①②③)2 到 4 周每天一两小时,重点是 PE 和指针链
分析(④⑤⑥)4 到 8 周最花时间,尤其脱壳和各种壳的差异
对抗(⑦⑧⑨)4 周以上取决于碰到的对抗强度

这个估算的前提是「有具体目标」——比如想看懂某个程序的某个功能。纯看教程不做东西,时间会翻倍且记不住。

边界:这条路通向哪

这套技术练到「能分析」那一层就该想清楚用途了。合法的方向很明确:恶意样本分析、软件兼容性研究、漏洞挖掘、安全产品开发、老系统维护(源码丢了只能逆向)。

不合法的方向同样明确,而且代价在变高:破解商业软件、绕过授权、给在线游戏做辅助。不只是封号的问题,国内已有破坏计算机信息系统罪的判例。

站里这套文章自始至终用虚构靶场和自建程序演示,偏移全是编的。能分析、能理解,和拿去用,是两件事。

结语

九个环节,三个阶段,顺序比努力重要。

如果只想记一句话:先学「东西是怎么组织的」(PE 和结构体),再学「怎么观察它」(调试和反编译),末尾学「怎么干预和对抗」。 跳过第一步,后面每一步都会反复卡在同一个地方。

参考资料

目录导航
  • 前置:三样东西,缺一样都会反复卡
  • 三个阶段,九个环节
    • 阶段一:地基(能读懂)
    • 阶段二:分析(能回答这里发生了什么)
    • 阶段三:对抗(能改、能绕、知道边界)
  • 常见卡点,按命中率排
  • 时间投入,说实话
  • 边界:这条路通向哪
  • 结语
    • 参考资料
  • 相关文章:

  • Ghidra 静态分析入门:把地址对过去,看伪代码2026-10-29 11:13:50
  • 加壳识别入门:为什么脱壳比找偏移难得多2026-10-29 11:13:50
  • Frida 动态注入入门:hook 一个函数、改一个返回值2026-10-29 11:13:50
  • PE 文件结构入门:导入表、节表,和「这个 EXE 到底链接了什么」2026-10-29 11:13:50
  • 反调试手段识别:调试点运行就退出,到底是谁在拦你2026-10-29 11:13:50
  • x64dbg 入门:断点、调用栈,以及「谁在改这个地址」2026-10-29 11:13:50
  • 用 ReClass 还原游戏结构体:从内存碎片到可直接用的偏移表2026-10-29 11:13:50
  • Cheat Engine 入门实战:从扫描到指针链,自己动手定位游戏数据2026-10-29 11:13:50
  • 发表评论

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。