xiongyifly168
驱动牛犊
驱动牛犊
  • 注册日期2008-06-03
  • 最后登录2011-07-27
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望25点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1886回复:4

【求助】关于堕落天才sysenter Hook代码在双核下运行的问题

楼主#
更多 发布于:2008-12-11 16:38
小弟初学驱动编程,在SSDT表后加入了几个自己定义的函数,然后想在sysenter处改变内核函数的索引值使之指向自己定义的函数,sysenter Hook使用的是堕落天才大大的代码,在其中MyKiFastCallEntry中修改eax的值为自己函数的索引值。代码在XP SP2单核机器上运行正常,但是在双核机器上会出现参数表地址被修改的情况,小弟认为可能是双核内核抢占造成的,但是应该怎样处理呢??期望各位达人的指点。
其中MyKiFastCallEntry处理代码如下:
__declspec(naked) void MyKiFastCallEntry(void)
{
  __asm{
      pop edi
      mov SysEnter_OffSet, eax
     }
  __asm{
      pushad
      push fs
      push 0x30
      pop fs
     }
  if(SysEnter_OffSet == NtClosePos)//NtClosePos为内核函数NtClose的索引值
  {
  __asm{
                  pop fs
    popad
    push New_NtClosePos //New_NtClosePos为自己定义函数索引值
    pop eax
                                pushad
                                push fs
          }
  }

__asm{
  pop fs
  popad
  jmp pMovedSysenterCode  
       }

}
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2008-12-11 18:03
这里没人认识他,你去看雪吧
驱动开发者 呵呵
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-12-11 23:08
在SSDT里边添加自定义例程,DDK导出了几个函数允许你合法的干这事,不需要用什么hook了。具体名称我一时也记不起来了,只知道在《Inside Windows NT》(第一版)里边描述了。
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-12-12 00:36
回去翻了一下,是这个例程 KeAddSystemServiceTable(),在<Undocumented NT>里边介绍。
xiongyifly168
驱动牛犊
驱动牛犊
  • 注册日期2008-06-03
  • 最后登录2011-07-27
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望25点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-12-12 09:45
引用第3楼slwqw于2008-12-12 00:36发表的  :
回去翻了一下,是这个例程 KeAddSystemServiceTable(),在<Undocumented NT>里边介绍。

但是应该怎样使应用层调用NtClose时转向我自己的函数呢?
游客

返回顶部