osris
驱动牛犊
驱动牛犊
  • 注册日期2007-03-06
  • 最后登录2008-10-19
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1867回复:0

请教:关于系统启动时对kernel32的调用与启动后的有何不同?

楼主#
更多 发布于:2007-03-06 17:14
  我用修改文件的方法,改了kernel32中的getprocaddr函数,打算学习HOOK的,在正常情况下已经测试通过,但重启系统会REBOOT,不知道是不是系统启动时有特殊的调用?
我改的内容:
1:修改了kernel32中的导出表,加了一个节表,放自己的代码,把getprocaddr的RVA指向自己的代码,并把原来的getprocaddr的RVA保存好。
2:当别的程序调用getprocaddr函数时,我接管,但不做任何操作,然后找到原来的getprocaddr的RVA,把RVA加上kernel32的加载基址(向低址遍历MZ/PE的方法得到),压入,再调用RET进到真正的getprocaddr中去,结束

在系统中已经测试OK了,但就是无法重启~~~
已知道重启时我的代码会被执行,就是不知道错在哪里
故意压入一个错误的地址,RET,会出蓝屏,显示句柄为0什么的。但正确的地址,RET,就直接重启了。
XP/2K PRO的系统。


***STOP:0X0000001E(0XC00000005,0XA006E1F1,0X00000000,0X00000040)
KMODE_EXCEPTION_NOT_HANDLED
***Address A006E1F1 base at A0000000,DateStamp 4047dcd6 - win32k.sys
游客

返回顶部