SPSYD
驱动牛犊
驱动牛犊
  • 注册日期2004-12-06
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分607分
  • 威望98点
  • 贡献值0点
  • 好评度66点
  • 原创分0分
  • 专家分0分
阅读:2722回复:5

关于hook ZwQuerySystemInformation的源码,有个问题,请指教

楼主#
更多 发布于:2007-03-29 15:19
  //////////////////////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呢?

最新喜欢:

zhuwgzhuwg
codez
驱动牛犊
驱动牛犊
  • 注册日期2005-06-20
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望73点
  • 贡献值0点
  • 好评度49点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-03-29 16:48
Re:关于hook ZwQuerySystemInformation的源码,有个问题,请指
跟踪一下, ZwXXX ROUTINE: B8 ?? ?? ?? ??
SPSYD
驱动牛犊
驱动牛犊
  • 注册日期2004-12-06
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分607分
  • 威望98点
  • 贡献值0点
  • 好评度66点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-03-29 23:57
codez你说的是什么意思,能否说明白一点,谢谢
SPSYD
驱动牛犊
驱动牛犊
  • 注册日期2004-12-06
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分607分
  • 威望98点
  • 贡献值0点
  • 好评度66点
  • 原创分0分
  • 专家分0分
地板#
发布于: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;
大侠们帮我看看,我糊涂了!!!
谢谢
codez
驱动牛犊
驱动牛犊
  • 注册日期2005-06-20
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望73点
  • 贡献值0点
  • 好评度49点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-03-30 10:17
Re:关于hook ZwQuerySystemInformation的源码,有个问题,请指
用 windbg  看看 ZwXXX 函数代码,你就知道了,呵呵
大家都在利用一个不算规则的规则。
qiweixue
驱动小牛
驱动小牛
  • 注册日期2004-07-21
  • 最后登录2011-12-19
  • 粉丝0
  • 关注0
  • 积分1006分
  • 威望274点
  • 贡献值0点
  • 好评度268点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2007-04-05 11:28

 那是服务ID号,
你看看它的位置放在那里.就知道为什么要加1了.
游客

返回顶部