首页
社区
课程
招聘
[求助]hook sysenter
发表于: 2009-3-30 15:45 4203

[求助]hook sysenter

2009-3-30 15:45
4203
借用大牛的源代码hook sysenter,能成功在虚机和真正的机器里都能成功.
我想绕过SSDT的hook,在中间加了几句代码后,在虚机了能成功,在真正的机器里面就不能,请大牛指点一二.
下面是部分的关键代码部分:

ULONG i;
__declspec(naked) void MyKiFastCallEntry(void)
{
        __asm{
             pop   edi      //因为用到了edi来跳转 这里恢复
              mov   i, eax   //得到服务ID
   }
   __asm{  
            pushad
            push fs
              push 0x30
             pop fs
   }

  // DbgPrint("sysenter was hooked! Get service ID:%X",i); //证明自己存在

   __asm{
              pop fs
              popad
              // mov eax,i  这句加上就不行,不加就 OK
     jmp pMovedSysenterCode //第二跳,跳转到原来的函数头代码
   }
  
}

注:mov eax,i    这句我想把拦截的服务号,处理后重新放回去.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
1,全局变量"i"可能多线程导致竞争;
2,AMD的CPU不用SYSENTER;
3,FS寄存器的值不一定是0x30。
2009-4-1 05:52
0
游客
登录 | 注册 方可回帖
返回
//