首页
论坛
课程
招聘
[求助]hook sysenter
2009-3-30 15:45 3167

[求助]hook sysenter

2009-3-30 15:45
3167
借用大牛的源代码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    这句我想把拦截的服务号,处理后重新放回去.

[培训] 优秀毕业生寄语:恭喜id咸鱼炒白菜拿到远超3W月薪的offer,《安卓高级研修班》火热招生!!!

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