WEB开发网
开发学院网络安全黑客技术 “PE文件格式”1.9版 完整译文(附注释)(1) 阅读

“PE文件格式”1.9版 完整译文(附注释)(1)

 2007-01-14 20:15:26 来源:WEB开发网   
核心提示: 因此,为了在PE文件中找到一个特定RVA地址的信息,“PE文件格式”1.9版 完整译文(附注释)(1)(8),你得按照文件已被载入时的那样来计算偏移量,但要按照文件的偏移量来跳过,)况且,你可想象一下,试举一例,假若你已知道执行开始处位于RVA0x1560地址处

因此,为了在PE文件中找到一个特定RVA地址的信息,你得按照文件已被载入时的那样来计算偏移量,但要按照文件的偏移量来跳过。

试举一例,假若你已知道执行开始处位于RVA0x1560地址处,并且想从那里开始的代码处反汇编。为了从文件中找到这个地址,你得先查明在RAM(内存)中各节是按照4096字节对齐的,并且“.code”节是从RVA0x1000地址处开始,有16384字节长;然后你才知道RVA0x1560地址位于此节的偏移量0x560处。你还要查明在文件中那节是按512字节边界对齐,且“.code”节在文件中从偏移量0x800处开始,然后你就知道在文件中代码的执行开始处就在0x800+0x560=0xd60字节处。

然后你反汇编它并发现访问一个变量的线性地址位于0x1051d0处。二进制文件的线性地址在装入时将被重定位,并常被假定使用的是优先载入地址。因为你已查明优先载入地址为0x100000,因此我们可开始处理RVA0x51d0了。因数据节开始于RVA0x5000处,且有2048字节长,所以它处于数据节中。又因数据节在文件中开始于偏移量0x4800处,所以该变量就可以在文件中的0x4800+0x51d0-0x5000=0x49d0处找到。

六、可选头(OptionalHeader)

----------------------------

紧跟在文件头后面的就是IMAGE_OPTIONAL_HEADER(尽管它名叫“可选头”,它却一直都在那里)。它包含有怎样去准确处理PE文件的信息。我们也将从头至尾的介绍其成员。

1)第一个16位的word单元叫“Magic(魔数)”,就我目前所观察过的PE文件而言,它的值总是0x010b。

2-3)下面2个字节是创建此文件的链接器的版本(‘MajorLinkerVersion’,“链接器主版本号”和‘MinorLinkerVersion’,“链接器小版本号”)。这两个值又是不可靠的,并不能总是正确地反映链接器的版本号。(有好几个链接器根本就不设置这个值。)况且,你可想象一下,你连使用的是“什么”链接器都不知道,知道它的版本号又有什么作用呢?

上一页  3 4 5 6 7 8 9 10  下一页

Tags:PE 文件 格式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接