PE6.0格式研究 (8)

作者:陆麟
转载请征得作者同意.
1999.9.30



上次说到PE的节.最近由于搞了点其他KERNEL MODE的东西,PE分析器就没写下去,国庆节我要出门,主页无法更新,所以想趁出门前先贴点东西,免得大家等得失望. :)
就讲解一下节里的部分东西吧!
先讲.edata引出函数表吧.
这个表现在已经基本被废弃了.只有老式的编译器还使用它.大家可以发现.用WIN9X自己带的QUICKVIEW能够看到引出函数或引入函数的DLL已经很少了.为什么.就是因为现在的VC5,6已经不使用该表了.现在的PE文件里,通过PEIMAGE_DATA_DIRECTORY ExpTbl来查找文件的引出函数表.而该指针指向的RVA其实就是文件里的偏移.
有时候我们能够发现,有些函数尽管被引出了,但是却没有函数名.(那是MS常干的事.隐藏调一些关键API.争取自己软件写作上的优势.)这时,历遍函数名称要千万注意,要用引出函数计数来确定到底有多少个被引出的函数是有名字的.哪些没名字的只好用序数调用了.(注意,KERNEL32.DLL里的隐藏API调用需要有些小技巧,这些技巧在MATT的WIN95系统编程奥秘里已经公开了.我就不罗嗦了.)

好了,我要再写个系统类的文章,这里就先止住了.