HOOK SwapContext 枚举隐藏进程.pdf
文本预览下载声明
HOOK SwapContext 枚举隐藏进程
学习各种外挂制作技术,马上去百度搜索 魔鬼作坊 点击第一个站进入、快速
成为做挂达人。
HOOK SwapContext 枚举隐藏进程
以前想检测一个被隐藏的进程 后来用暴力枚举的方法解决了 但是HOOK SwapContext 没
有看到有完整的代码 所以搜集了点网上有用的模块 自己整合实现了下 确定支持XP3,
XP2没测试 应该也能支持
附完整工程代码
难点:是得到SwapContext 地址 还有一些细节问题~
原理:KiSwapContext 调用SwapContext 时候 ESI 存放的是要换进线程的上下文 EDI 存放
的是要换出线程的上下文 然后截获ESI 即换进的ETHREAD 得到相应的EPROCESS 然后
搜集
缺点:对系统性能影响非常大,因为系统线程调度很频繁,wrk的KiSwapContext 用汇编写的
就能体现出来对效率的要求高~.
另外有个有趣的问题
KiSwapContext 是fastcall 调用方式 就是通过ECX EDX 传 多出的按STDCALL传
WRK 是这样注释的
;BOOLEAN
;KiSwapContext (
; INPKTHREAD OldThread
; INPKTHREAD NewThread
; )
但是看下 WRK 中的代码
mov edi, ecx ; setold thread address
mov esi,edx ;setnext threadaddress
movzx ecx,byte ptr[edi].ThWaitirql ;setAPC interrupt bypassdisable
call SwapContext ;swapcontext
发现的确是两个参数
用WINDBG 看
805459758bf1 mov esi,ecx
805459778bb mov edi,dwordptr[ebx+124h]
8054597d89b324010000 mov dword ptr[ebx+124h],esi
805459838a4f58 mov cl,byteptr[edi+58h] 8f5000000 call nt!SwapContext (80545a80)
发现KiSwapContext 是一个参数, esi是要换进的线程上下文 是通过ECX (第一个参数得
到) edi 则不是
所以结论 KiSwapContext 的参数现在是一个了,也许我WRK 没更新 老版本。。
WRK KiSwapContext 代码
cPublicFastCall KiSwapContext, 2
.fpo(0,0,0,4,1,0)
;
;N.B. Thefollowing registersMUSTbe savedsuch thatebp is savedlast.
; Thisis done sothe debugger can find thesaved ebpfora thread
; thatis not currently in the running state.
;
sub esp,4*4
mov [esp+12],ebx ;save registers
mov [esp+8],esi ;
mov [esp+4],edi ;
mov [esp+0],ebp ;
mov ebx,PCR[PcSelfPcr] ;set addressofPCR
mov edi, ecx ; seto
显示全部