凌云窟
南山巅上火麟烈,北海潜深雪饮寒。可怜两锋未缘见,雪刀封隐孤剑鸣。
<2006年2月>
2930311234
567891011
12131415161718
19202122232425
2627281234
567891011

留言簿(0)

随笔分类

随笔档案

文章档案

相册

简历下载

搜索

最新评论

阅读排行榜

评论排行榜

 
VC知识库BLOG   首页  新随笔  联系  聚合  登录 
  随笔-22 文章-0 评论-38 Trackbacks-0
2006年2月9日
    看了《windows核心编程》关于DLL的部分,我把我觉得重要的而又容易忘记的东西记录下来了。

    PE文件结构中,有两个独立的节,分别叫做:输入节,.idata 输出节,.edata。不论是可执行模块还是DLL模块,它都可以有自己的输入节,这个节中列出了可执行模块和DLL模块所需要的DLL模块名,同时对于列出的每一个DLL还要指出可执行模块和DLL模块引用了那些函数和符号变量。可以使用命令:DUMPBIN–imports xx.exe 或者 DUMPBIN –imports xx.dll 察看文件的输入节。
    输出节一般是跟DLL相关的。这个节包括输出变量,函数和类符号的列表。可以使用DUMPBIN –exports xx.exe来察看这个节的内容,可以发现,这个节一个主要功能就是指出输出变量,函数和类符号在DLL文件中的相对偏移位置。
    顺便提一下lib文件,它能使链接程序产生任何调用DLL中函数的可执行模块(EXE或.DLL)  windows核心编程》P473
       假如存在:B.DLL C.DLL D.DLL 。然后把这个文件连同起始首选地址一起传送给REBASE。比如:REBASE -b 600000 B.DLL C.DLL D.LL 。可以简单的如此实用,而且起始地址是0x600000SDK上面有详细说明。
    还有一点就是使用DUMPBIN的时候,一定要将DUMPBIN.exe,mspdb60.dll,link.exe保存到一个目录。
发表于 2006-02-09 13:25 莫名春秋 阅读(1936) | 评论 (0)编辑 收藏