noble_shi
驱动牛犊
驱动牛犊
  • 注册日期2003-07-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分73分
  • 威望9点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
阅读:1459回复:2

请各位大侠帮助我,多谢了,呵呵

楼主#
更多 发布于:2004-05-20 21:19
  这个问题让我很费解,请各位大侠帮助,先谢过了。

  最近用softice调试内核,发现如下难以理解的事情!
  在softice里使用命令:u zwcreatefile,现象如下:
  ntoskrnl!ZwCreateFile
  0008:804D1A46 MOV EAX, 00000020
  0008:804D1A4B LEA EDX, [ESP+04]
  0008:804D1A4F INT 2E

  让我感到奇怪的是:这些语句应该出现在ntdll.dll中就比较好理解了。因为上面的语句明显是要切入内核,这是ntdll要完成的功能呀!
  可是这里为什么出现在了ntoskrnl中,而且从这些代码所在的内存地址可以看出本身就在内核中(2G以上空间)。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-05-20 23:39
zwcreatefile在内核中也可以使用,不过其功能和NTDLL过来的一样,都必须经过INT 2E的参数验证,而NtCreateFile则不用参数验证,所以2个都可以使用,看你是否需要参数验证而已.....
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2004-05-20 23:45
而且INT2E并非RING3->RING0使用,RING0中也可以使用INT2E来进行调用,而无须特权变化,相当于无特权级变化的CALL而已,当然用中断门的方法对性能还是有影响的,所以MS在XP后就直接在RING0中采用CALL的方式来在zwcreatefile中跳到IDT2E的地址中了,虽然在XP以后系统不使用INT2E来进行系统调用,HOOK INT2E也不再有效,但INT2E其例程内部的地址,还是系统服务调度的必经之路,我以前曾经发布过一个修改WEBCRAZY的STRACE的例子,使其通用于2K/XP/2003就是采用HOOK该必经之路的方法,嘿嘿.....
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部