Cpp 对象模型探索 / 外部调用私有的虚函数的方法
生活随笔
收集整理的這篇文章主要介紹了
Cpp 对象模型探索 / 外部调用私有的虚函数的方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
答案
通過虛函數表指針找到虛函數表,再通過虛函數表中的元素,即:函數指針,得到私有函數的首地址。
示例
#include <iostream>class A { private:virtual void func(){ std::cout << "func()" << std::endl;} }; using PFUNC = void (*)(); int main() {A aobj;int* pvptr = (int*)&aobj; // 獲取 aobj 的虛函數表指針的地址。int* vptr = (int *)*pvptr; // 獲取 aobj 的虛函數表的首地址。PFUNC pfunc = (PFUNC)*(vptr + 0); // 獲取 aobj 的虛函數表的第一項的值,也就是函數 func() 的首地址。// 將其轉為 PFUNC 類型。pfunc();return 0; }結果?
func()?
(SAW:Game Over!)
總結
以上是生活随笔為你收集整理的Cpp 对象模型探索 / 外部调用私有的虚函数的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cpp 对象模型探索 / 静态局部对象只
- 下一篇: Cpp 对象模型探索 / 带有虚继承类的