文档详情

HOOK SwapContext 枚举隐藏进程.pdf

发布:2017-05-26约1.13万字共11页下载文档
文本预览下载声明
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
显示全部
相似文档