本文共计767个字,预计阅读时长2.9分钟。
1.申请一块长达31字节的可执行NonPagedPool内存 2.从ZwOpenProcess的起始地址开始复制31字节到上面Buffer 3.修正标蓝的代码(计算出KiServiceLinkage和KiServiceInternal的地址,并填入正确的shellcode) 4.把标红的4个字节修改为你要调用的Zw***函数的索引号码
fffff800016bc920 488bc4 mov rax,rsp fffff800
016bc923 fa cli fffff800016bc924 4883ec10 sub rsp,10h fffff800
016bc928 50 push rax fffff800016bc929 9c pushfq fffff800
016bc92a 6a10 push 10h fffff800016bc92c 488d05bd2d0000 lea rax,[nt!KiServiceLinkage (fffff800
016bf6f0)] fffff800016bc933 50 push rax fffff800
016bc934 b823000000 mov eax,23h fffff800016bc939 e902650000 jmp nt!KiServiceInternal (fffff800
016c2e40) fffff800`016bc93e 6690 xchg ax,ax
5.CALL这段Buffer。 是不是非常简单。
科普一下在驱动中如何调用Zw***未导出函数