阅读:2722回复:5
关于hook ZwQuerySystemInformation的源码,有个问题,请指教
//////////////////////Hook ZwQuerySystemInformation/////////////////////////////////////////////////
_asm{ cli; mov eax,cr0 mov OldCr0,eax and eax,0fffeffffh mov cr0,eax } _asm{ mov ecx, dword ptr [ZwQuerySystemInformation];//?? mov edx, [ecx+1];//??为什么+1 mov eax, dword ptr [KeServiceDescriptorTable]; mov esi, [eax]; mov edx, [esi+edx*4]; mov dword ptr [OldZwQuerySystemInformation], edx mov ecx, [ecx+1] mov eax, [eax] mov dword ptr [eax+ecx*4], offset MyZwQuerySystemInformation; } _asm { mov eax,OldCr0 mov cr0,eax sti; } KdPrint(("Hook ZwQuerySystemInformation'status is Succeessfully ")); 以上是网上找的一段代码,我不明白hook ZwQuerySystemInformation,为什么 mov ecx, dword ptr [ZwQuerySystemInformation];//?? mov edx, [ecx+1];//??为什么+1 引用ZwQuerySystemInformation的时候,得到的是这个函数的索引的指针吗? 为什么还要+1呢? |
|
最新喜欢:zhuwg |
沙发#
发布于:2007-03-29 16:48
Re:关于hook ZwQuerySystemInformation的源码,有个问题,请指
跟踪一下, ZwXXX ROUTINE: B8 ?? ?? ?? ?? |
|
板凳#
发布于:2007-03-29 23:57
codez你说的是什么意思,能否说明白一点,谢谢
|
|
地板#
发布于:2007-03-30 00:39
我看到另一个版本的程序如下
#define SYSTEMSERVICE(_function) KeServiceDescriptorTable.ServiceTableBase[ *(PULONG)((PUCHAR)_function+1)] 这段代码应该相当于 mov ecx, dword ptr [ZwQuerySystemInformation];//?? mov edx, [ecx+1];//??为什么+1 mov eax, dword ptr [KeServiceDescriptorTable]; mov esi, [eax]; mov edx, [esi+edx*4]; 那么,mov ecx, dword ptr [ZwQuerySystemInformation];应该 改为mov ecx, dword ptr ZwQuerySystemInformation; 大侠们帮我看看,我糊涂了!!! 谢谢 |
|
地下室#
发布于:2007-03-30 10:17
Re:关于hook ZwQuerySystemInformation的源码,有个问题,请指
用 windbg 看看 ZwXXX 函数代码,你就知道了,呵呵大家都在利用一个不算规则的规则。 |
|
5楼#
发布于:2007-04-05 11:28
那是服务ID号, 你看看它的位置放在那里.就知道为什么要加1了. |
|