wangkaicj
驱动牛犊
驱动牛犊
  • 注册日期2002-01-08
  • 最后登录2014-06-11
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望67点
  • 贡献值0点
  • 好评度66点
  • 原创分0分
  • 专家分0分
阅读:2119回复:3

难题:应用程序怎么得到KeServiceDescriptorTable地址以及系统调用函数地址

楼主#
更多 发布于:2007-07-26 23:03
   不通过驱动,应用程序如何得到KeServiceDescriptorTable地址以及系统调用函数地址??
  请给位大牛叫两声吧!
  非常感谢!!!

最新喜欢:

wingmanwingma...
titilima
驱动牛犊
驱动牛犊
  • 注册日期2007-02-08
  • 最后登录2009-06-12
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-07-27 09:41
1. 用LoadLibrary+GetProcAddress可以计算出KeServiceDescriptorTable相对于ntoskrnl.exe的偏移,再加上NtQuerySystemInformation就可以获得KeServiceDescriptorTable的真实地址了。
2. NtSystemDebugControl可以读取0x80000000以上的系统内存,不过貌似要XP才可以。
http://www.titilima.cn
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2007-07-27 10:26
KeServiceDescriptporTable其实上位于线程EThread->Kthread->ServiceTable处,从那里就可以取得了,虽然有时候是Shadow,但前4个字节肯定是ssdt表的地址(shadow前10字节是ssdt备份表~)
至于怎么读内核内存,方法就多了,呵呵
驱动开发者 呵呵
wangkaicj
驱动牛犊
驱动牛犊
  • 注册日期2002-01-08
  • 最后登录2014-06-11
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望67点
  • 贡献值0点
  • 好评度66点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-07-29 15:03
   多谢两位!
      titilima 的方法很好用,我的应用程序可能都不会总有管理员权限,所以还有1个小问题,那就是如何获取ntoskrnl的ServiceTable的地址(也就是KeServiceDescriptorTable的值),由于不一定都有管理员权限,所以读写内核空间地址的方法行不同,而且不是很必要,各位大牛有什么好办法得到KeServiceDescriptorTable的值啊??
    请给为大牛帮帮忙吧!  
游客

返回顶部