|
APC注入是什么原理?
6 A4 E0 r+ l/ W4 S首先我们得来了解下它是什么东西,才能更好的运用它,关于APC对于懂微软api函数使用的学员来说可能不陌生,新手估计没有接触过。
9 Q* d. G6 y; F- HAPC 注入的原理是利用当线程被唤醒时APC中的注册函数会被执行的机制,并以此去执行我们的DLL加载代码,进而完成DLL注入的目的,
/ q6 D+ ^7 b. C$ x' g0 `其具体流程如下:$ b# F m% Y. m6 s) j4 F) K% @
1.当EXE里某个线程执行到SleepEx() 或者 WaitForSingleObjectEx() 时,系统就会产生一个软中断(或者是Messagebox弹窗的时候不点OK的时候也能注入)。
P# H( Z% J3 \' m2.当线程再次被唤醒时,此线程会首先执行APC队列中的被注册的函数。4 E6 A3 o: C! Y1 o: W3 h
3.利用QueueUserAPC()这个API可以在软中断时向线程的APC队列插入一个函数指针,如果给它插入的是Loadlibrary()执行函数的话,就能达到注入DLL的目的。2 }# c5 O* ^8 }6 g, q3 ]
& P/ l5 |5 g7 X& l* J
大至了解了下后就可以了,因为为了方便写辅助的学员注入游戏,我们模块里早已经提供了多种注入方式,本次的APC注入方式也不属于一种注入方式。
% V1 _3 {6 f& W4 p. m- v" a! B当然这里要说下,APC注入它分r0(可以使用NtQueueApcThread)层和r3层,这里我们先学习运用下r3层的APC注入,使用QueueUserApc。
l; `/ A& R1 R毕竟内核驱动来进行注入涉及到系统方面,现在微软高版本系统对驱动加载都是要求比较严格的,- \% V8 o. |! X- T' B ]
所以r3层(也就是应用层)能实现对游戏的注入,那尽量用应用层的,内核驱动方式的APC注入我们在后续模块更新了驱动后再来讲。
3 _/ _# r# `) O' h5 d
1 {: w9 d4 {* d8 `. W$ NAPC注入方式在我们独立团的 Game-EC 驱动模块 从8.5.2的驱动版本才加入的,+ x8 r/ I& Z3 o
它的系统兼容方面:目前已经在xp,win7,win8,win10 32位/64位系统中测试过可用5 A1 w |' E: N" @ `: A
使用的方法很简单(APC注入.exe 代码):
" G4 X3 i: l8 C* Y0 i+ j" l }7 i8 T$ q2 m }: H
% y3 q, M: E; g. W" @, Awin10 64位 注入效果:
5 O+ R7 f$ g0 [7 B" D: S9 K* R1 h- S( H) n% M( x% n$ b0 k5 \
# V. H4 t* C8 S. |
APC注入的好处:( i) L/ I- S: F- y7 J& A* q
这种方式注入的好处就是DLL注入到目标进程里后,用查看进程模块的工具比如:XT,PCHunter,等都查看不到它的存在,类似于我们模块里的内存注入一样!) G7 F8 J2 X9 M8 K
如果游戏枚举自身进程模块来检测辅助DLL,是查不到我们的DLL的!
E; ^- `6 f u+ [+ a- b, S; o, t1 g) I! u
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|