PE文件中虚函数表
·
一.类和对象
<1.类在编译器编译阶段会被编译为虚函数表,以便快速加载和执行
<2.对象是手动创建的一块内存区域,其中一个成员变量指向虚函数表
<3.对象分布在堆区,可以存在很多个.虚函数表在rdata区,在PE加载后稳定不变常驻在内存中
二.虚函数表初始化
<1.编译器将类中定义的函数编译在text段,在rdata段创建一块内存区域存储指向text段函数的指针,即为虚函数表
<2.虚函数表的表头地址+固定偏移 = 类中函数的实际地址.
<3.调用虚函数表中的函数采用ptr + offset进行调用.在PE文件编译完成后固定不变
三.对象的创建
<1.调用WindowsAPI在堆区创建一块内存,内存首个变量存放指向虚函数表的指针
<2.对象中的成员变量在编译后采用对象首地址Ptr+固定编译进行访问,PE编译完毕后稳定不变
更多推荐


所有评论(0)