填补逆向工程中的“壳”与注入盲区

很多学习者在掌握基础逆向后,会撞上两堵墙:一是遇到加壳软件无从下手,二是想往进程里塞代码却找不到正确切入点。这门课不聊理论空话,专门解决这两个硬骨头。核心围绕 PE 文件的压缩算法原理和可执行代码注入技术展开。你会发现,普通的脱壳思路在这里不够用,因为课程直接切入“压缩与注入”的结合点,教你如何在压缩环境下定位代码段,以及如何绕过入口点保护机制。这不仅是解码问题,更是理解操作系统如何加载可执行文件的关键一环。

适合已经熟悉 PE 文件结构、知道节表是什么、了解 DLL 加载原理的同学。如果你连 RVA 和 OVA 的区别都还模糊,建议先回去补补基础。这门课的前提是你需要能看懂 OD 或 IDA 的基本操作,否则看代码注入部分时会像看天书。它针对的是那些“知道要改什么,但不知道代码该放在哪、怎么算偏移”的尴尬阶段。具备 C 语言基础和汇编语言常识是必备门槛,没有这两块地基,后面的位置无关代码编写将寸步难行。

从位置无关到真实注入的实战路径

建议从第一块的压缩原理和代码位置移动开始看。特别是关于“notepad 不能移动原因”和“入口点保护”这两节,它们解释了为什么有些程序不能简单重定位,这是理解后续注入技术的关键铺垫。接着重点攻克“与位置无关的可执行代码”,这是 Shellcode 编写的核心能力——如果你的代码依赖固定地址,注入到任何地方都会崩溃。最后再看代码注入的实际操作,这时你会明白为什么要先处理 ntdll 的一致性检查。整个学习顺序遵循由浅入深的逻辑,先懂结构,再懂约束,最后懂突破。

学完能独立做什么及练习配合

学完后,你应该能独立分析简单的压缩 PE 文件,定位被压缩的代码段,并编写不依赖固定基址的注入代码。不再是盲猜偏移,而是通过解析节表和导入表来动态计算地址。资料包里的工具和数据主要用于验证你的解析结果,不要只看不练。建议每看完一节关于压缩或注入的视频,就用提供的工具手动走一遍流程,确认自己能否在没有教程指引的情况下,重新推导出代码注入的偏移量。只有亲手把代码跑通,才算真正掌握了这门技术,否则知识永远停留在纸上。

课程目录

1-1 [PE文件的压缩和可执行代码注入] 工具和数据 (01:04:54)
1-2 [PE文件的压缩和可执行代码注入] 可执行代码的位置移动 (57:23)
1-3 [PE文件的压缩和可执行代码注入] 与位置无关的可执行代码 (43:43)
1-4 [PE文件的压缩和可执行代码注入] 在一个可执行程序中添加一段可执行代码 (53:51)
1-5 [PE文件的压缩和可执行代码注入] notepade不能移动原因 (55:26)
1-6 [PE文件的压缩和可执行代码注入] 入口点保护 (56:38)
1-7 [PE文件的压缩和可执行代码注入] 确认ntdll是否是同一个ntdll (45:55)
1-8 [PE文件的压缩和可执行代码注入] 准备工作 (01:08:56)
1-9 [PE文件的压缩和可执行代码注入] 代码注入 (36:41)
1-10 [PE文件的压缩和可执行代码注入] 代码自动注入 (50:43)
2-1 [导入表和导出表的利用] kernel32和dll的联合使用 (34:24)
2-2 [导入表和导出表的利用] 导入节 (45:19)
2-3 [导入表和导出表的利用] DllMain的自动执行机制以及利用想法 (27:26)
2-4 [导入表和导出表的利用] 具体的解决办法-让dll自动运行 (44:55)
3-1 [可执行文件的联合执行] 可执行文件的联合执行 (20:19)
4-1 [给EXE枷锁] 最简单的枷锁方式 (24:39)
5-1 [EXE文件加密] PE加密原理 (35:41)
5-2 [EXE文件加密] 确认数据目录中各项对loader的影响 (53:33)
5-3 [EXE文件加密] 对重定位进行修改正 (47:21)
5-4 [EXE文件加密] 导入函数地址表-1 (01:24:57)
6-1 [进程隐藏和文件强制删除原理] 进程列举和进程所打开文件列举 (01:06:26)
6-2 [进程隐藏和文件强制删除原理] 应用层进程隐藏 (01:22:37)
6-3 [进程隐藏和文件强制删除原理] 内核进程隐藏和文件强制删除 (27:48)
7-1 [PE应用总结] PE应用总结 (54:53)