这门课解决的是什么问题

如果你写过 Ring3 的注入,多半用过 CreateRemoteThread 或者 SetWindowsHookEx,然后在某个带保护的游戏上试了一下,进程没了,或者线程根本没起来。问题不在你的代码写错了,而在于这些常规手段早就在反作弊的重点监控名单上。APC 是一条相对冷门但一直有效的路子:它不新开线程,不调用那些被挂钩的 API,而是借用目标进程里已经存在的线程,在它下一次进入可警醒状态时把活儿干了。

但这门课不是教你抄一段注入代码就完事。APC 的坑几乎全在细节里:32 位和 64 位下 KAPC 结构布局不一样,用户 APC 和内核 APC 的插入路径不同,KiDeliverApc 的分发顺序决定了你的回调到底会不会被执行,线程处于什么等待状态才能被唤醒也有讲究。这些不搞清楚,你写出来的东西就是时灵时不灵。

先确认自己缺哪一块

这门课默认你已经具备一些基础,如果下面几条里有对不上的,建议先补课再回来:

  • 能看懂内核结构体定义,知道 LIST_ENTRY、KAPC_STATE 这类东西是干什么的;
  • 用过 WinDbg 双机调试,至少能下断点、看结构、跟调用栈;
  • 知道线程调度、等待状态、IRQL 这些概念大致是什么意思;
  • 写过至少一个 Ring3 的读取或注入程序,哪怕是调库的。

反过来说,如果你的目标只是「让某个程序动起来」,那驱动签名、补丁保护、PG 这些现实障碍在这门课里不会展开讲,APC 也不是绕过一切的银弹。它是工具箱里的一件,不是全部。

课程会讲到哪些具体环节

主线是三段:初始化、插入、执行。初始化部分会拆开 APC 对象是怎么构造的,为什么用户 APC 和内核 APC 要用不同的初始化函数,ApcRoutine、NormalRoutine、KernelRoutine 三个回调分别在什么时机被调到,谁负责释放内存谁负责收尾。这段不理解,后面内存管理一定出问题。

插入过程会对比几种插入方式:KeInsertQueueApc、KeInitializeApc 配合手动挂链、以及从 Ring3 触发内核 APC 的路径。这里会涉及目标线程的选择——插到哪个线程上,效果完全不同,系统线程、主线程、已经挂起的线程,行为各异。

执行过程是重头戏,围绕 KiDeliverApc 展开,讲清楚它在线程返回用户态之前被调用的条件,以及 SpecialApc 和普通 APC 的处理差异。搞明白这一步,你才能解释为什么有时候插进去了却不执行。

最后才是应用层:往目标进程写内存、把一段代码塞进去再让它执行、以及在 64 位下做远程调用时怎么处理参数传递和栈对齐。

学完之后你应该能回答

  • 为什么用户 APC 只有在目标线程处于可警醒等待状态时才会被投递,而内核 APC 可以在别的时机执行?
  • KAPC 在 x86 和 x64 下的字段偏移差在哪,跨架构移植时容易踩哪个坑?
  • 同一个线程上挂多个 APC,执行顺序由什么决定?能不能保证顺序?
  • 用 APC 做远程调用和用 CreateRemoteThread 做,在执行时机、被检测概率、失败模式上有什么区别?
  • APC 被插入后线程一直不进入分发点,这种情况你会怎么排查?

这些问题如果你现在答不上来,看完再回头答一遍,就知道自己到底学到了什么。

配套练习和注意事项

课程不提供任何资料下载,也不涉及具体游戏的数据分析,测试用的程序只做效果演示。这意味着练习要自己搭:准备一个虚拟机、配好双机调试、写一个最小的驱动和一个用来被操作的目标进程,从最简单的「往目标进程写一个字节并读回来」开始,逐步加功能。每加一步都用调试器跟一遍,把 KAPC 链和分发路径看清楚,比直接跑通一个完整注入有价值得多。

另外提醒一句:这些技术在真实环境里使用受法律和软件许可约束,练习请在自己的机器或授权环境里做。理解原理和拿它去搞别人是两回事,别弄混。

Windows内核-APC

课程详情

课程标题:Windows内核-APC

适合人群:对游戏逆向,游戏安全感兴趣人群

你将会学到:

  • APC能做出的功能:内存读写、远程CALL、注入

课程简介:

本课程不提供任何资料下载。

课程内容不涉及游戏数据的分析,而是通过学习Windows(32/64)位内核运行原理相关的知识,来绕过或突破游戏的保护。

课程中使用的测试程序或游戏仅用于演示效果。

如构成侵权,请及时联系我删除对应视频。

APC(Asyncroneus Procedure Call)异步过程调用,主要讲解APC初始化过程、插入过程、执行过程,以及通过APC实现对其他进程的读写、注入功能、远程CALL功能。

课程目录

01 01.异步过程调用APC.mp4
02 02.备用APC.mp4
03 03.APC初始化过程.mp4
04 04.APC插入过程.mp4
05 05.APC函数执行过程(内核APC).mp4
06 06.APC函数执行过程(用户APC).mp4
07 07.用户APC注入(DXF).mp4
08 08.内核特殊APC.mp4
09 09.内核APC.mp4
10 10.内核APC读写内存(DXF).mp4
11 11.内核中插入用户APC.mp4
12 12.内核中插入用户APC(DXF喇叭公告).mp4