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

[求助]hook sysenter

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

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

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