开始学习 0Day 了,前进了小小一步:《0Day 安全:软件漏洞分析艺术》第一篇末尾的 crack_me 实验成功了。
纪念一下。
几个概念:
PE: Portable Execute
文件偏移地址 File Offset
相对于文件头的偏移量
装载基址 Image Base
PE 装入内存的基地址。Default EXE IB: 0x00400000; Default DLL IB: 0x10000000
虚拟内存地址 Virtual Address, VA
PE 装入内存后的地址
相对虚拟地址 Relative Virtual Address, RVA
内存地址相对于装载基址 IB 的偏移量
VA = IB + RVA
PE 文件按磁盘数据标准存放,以 0x200 (512) 字节为基本数据节。
内存中代码以 0x1000 (4096) 字节为基本数据节。
节偏移:由存储基本数据节的差异引起的节基址差。
如:某 PE 中 .text 的 FileOffset=0x400, RVA=0x00001000, 则节偏移=0x1000-0x400=0xc00
File Offset = VA - IB - 节偏移 = RVA - 节偏移