1.PE的架构(dll和EXE)
难点是加壳后无法分析。
2.虚拟内存
当作银行和钞票来理解。涉及到底层操作系统。一般我们只考虑PE文件中的文件偏移和虚拟内存地址。
3.虚拟内存和PE文件的映射关系(重点)
VA;RVA;IB(装载基地址,一般是0x00400000);文件偏移。其中装载基地址可以修改。0x400000是2的22次方,即4M的字节数是不分配的。
PE映射至虚拟内存时,存在节偏移的问题:
即一般PE中的一个存储的基本单位是0x200(512B)大小,虚拟内存中的一个基本单位是0x1000字节数,即4KB大小。数据节超出基本单位时,自动分配下一个基本单位,直到用0x00补齐。
因此,PE映射到虚拟内存后,相对文件偏移会小于实际的RVA(即相对虚拟装载基址的虚拟偏移量。)
节偏移的概念。相对虚拟地址偏移量-文件偏移量。节偏移即PE文件中的数据节,映射到虚拟内存后,相对于基址发生的变化。
节偏移,也是数据节中所有字节位置,从PE文件映射到虚拟内存中之后,相对于基址发生的变化。