SSDT表中函数地址和导出函数表的函数地址

 
昨天把 ntkrnlpa 的PE格式简略的查看了一遍,因为粗心,例如把0x2A看成了0xA2,查了半天导出函数一些信息,就是错误,有些绝望了,还以为要么我前面看的理解全部错了,要么wingdows把 ntkrnlpa 这个关键的核心pe格式和别人做得不一样了....  郁闷,这个时候不由自主想到了lizhe,记得研一时计算类的考试一出来lizhe就会感叹“又是1加1的计算出错”之类的话...
很久没有细心的做些事情,变得这么乱七八糟了....

整到晚上11点半才明白,但是突然想起原先SSDT表中读的情况好像又不是这样?郁闷,懒得想了,看动漫看动漫!! 背骑少女情节太紧扣了~~

下午到图书馆,继续我的昨天残留问题。备上了几个Dbgprint,终于知道原因了。 SSDT表原先位于的是PE的可执行代码段.text段,里面读取的函数地址都加上了基址,所以SSDT处理时读取后还需要减去基址。

例如常用的基址为:0x00400000
例如native函数 ntclose ,在导出函数表中读取的是 0x000E3F70,而通过SSDT读到的函数地址为 0x004E3F70。

哈哈,PE文件的学习暂时告一段落了,明天可能又得开会,还是正题正题 ...


[本日志由 迷走尘埃 于 2009-03-17 02:21 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: windowsSSDT导出函数
评论: 0 | 引用: 0 | 查看次数: 315
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 200 字 | UBB代码 关闭 | [img]标签 关闭