青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 8  文章 - 26  trackbacks - 0
<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿(5)

隨筆檔案

文章分類

文章檔案

相冊

C++語言

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

 

今天在網上看了一篇關于C++虛函數表的文章,讓我對C++又有了更深了的理解,文章鏈接:http://www.51cto.com/art/200712/62673_2.htm

在這篇文章中講到了通過虛函數表訪問私有的虛函數的問題,問題就出在C++在虛函數表中保存了虛函數的地址,而這個地址又很方便查找。
在每個C++對象實例的開頭存儲這這個對象的虛函數表的指針,通過這個指針可找到虛函數表,在虛函數表中就存著虛函數指針,這樣我們就可以騙過編譯器訪問私有的虛函數了。

 1class base
 2{
 3private:
 4    virtual    void f(){cout<<"base_f()"<<endl;}
 5}
;
 6class child:public base
 7{
 8private:
 9    virtual void f(){cout<<"child_f()"<<endl;};
10    void g(){cout<<"base_g()"<<endl;}
11    
12}
;
13void main()
14{
15    typedef void(*Fun)(void);
16    child b;
17    Fun pFun;
18    pFun = (Fun)*((int*)*(int*)(&b));
19    pFun();
20}

輸出結果:child_f();

這樣就訪問了私有的虛函數了。

但是這樣只能訪問私有的虛函數,那怎么才能訪問任意的私有函數呢,像child類的g()函數,還請高人指點。
posted on 2008-11-03 20:43 楊彬彬 閱讀(2840) 評論(10)  編輯 收藏 引用

FeedBack:
# re: 通過虛函數表訪問私有虛函數 2008-11-03 22:50 giscn
私有函數本來就是防止別人訪問的。最簡單的辦法是將類定義中的 private 改成 public  回復  更多評論
  
# re: 通過虛函數表訪問私有虛函數 2008-11-03 23:08 lonkil
這種將地址轉成函數指針的方法,好像只能訪問第一個吧?如果有兩個虛擬函數,就不好訪問了吧?

其實這個實驗只能讓你更清楚,虛函數表的物理位置,沒有什么實際意義,個人愚見,哈哈。

  回復  更多評論
  
# re: 通過虛函數表訪問私有虛函數 2008-11-04 12:23 abc
函數帶參數的怎么訪問?  回復  更多評論
  
# re: 通過虛函數表訪問私有虛函數 2008-11-04 15:15 zuhd
看了那篇文章,好像只要是虛函數,就可以通過虛表的指針獲得,至于每個函數在虛表中的偏移量,我也沒有理解  回復  更多評論
  
# re: 通過虛函數表訪問私有虛函數 2008-11-04 15:31 zuhd
http://blog.csdn.net/haoel/archive/2007/12/18/1948051.aspx
這是原文地址,看了就明白了,寫得很贊  回復  更多評論
  
# re: 通過虛函數表訪問私有虛函數 2008-11-04 19:08 空明流轉
私有函數僅僅在編譯期間起作用。  回復  更多評論
  
# re: 通過虛函數表訪問私有虛函數 2008-11-12 20:28 imdavid
child cc;

int *p = (int *)&cc + 1;

__asm
{
call p ;// call the point to the address
}

如果類有構造函數, 不加1直接取到其地址并調用.

# re: 通過虛函數表訪問私有虛函數 2008-11-04 19:08 空明流轉
私有函數僅僅在編譯期間起作用。

這個是對, 但是想要弄明白一個類的內存分配。可能還需要找點資料. 另外函數的前后分布也有關系。


13void main()
14{
15 typedef void(*Fun)(void); // 這個局限性比較大
16 child b;
17 Fun pFun;
18 pFun = (Fun)*((int*)*(int*)(&b));
19 pFun();
20}


寫個類的內存分布掃描器還是有必要的. :)

  回復  更多評論
  
# re: 通過虛函數表訪問私有虛函數 2008-11-13 19:01 楊彬彬
@imdavid
“int *p = (int *)&cc + 1; ”小弟不才,對于這還是不明白,那p所指向的究竟是什么?是虛函數的指針,但虛函數指針不是在虛函數表里嗎。。真暈啊。
有沒有好的資料能看看
  回復  更多評論
  
# re: 通過虛函數表訪問私有虛函數 2008-11-13 19:30 imdavid
呵呵, 以為沒有人關注了呢, +1 是class里面的成員順序也就是虛函數指針. 別問我+2為什么不對 :)

但虛函數指針不是在虛函數表里嗎.

個人認為:在編譯時確實存在VTable. 但是在運行時里"感覺"就不分VT了。而是直接指向類首地址,在進行地址加減就可以得到.

你們自定義函數指針是可以,但局限性太大太大.

另外說明:這東西沒有資料可尋。 有問題一起msn聊聊. imdavid2msn@msn.com  回復  更多評論
  
# re: 通過虛函數表訪問私有虛函數 2008-11-13 19:32 imdavid
個人認為:在編譯時確實存在VTable. 但是在運行時里"感覺"就不分VT了。而是直接指向類首地址,在進行地址加減就可以得到.

關于這句話有所保留。 不過因為是先指向class首地址 然后在進行查找。所以可行。

另外也用過struct的一些方法。 例如: ((類指針*)0)->xxx 但編譯有問題。 還在琢磨。
  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              久久久天天操| 国产一区二区三区四区| 99国产一区| 亚洲精品一区二区三区不| 亚洲高清网站| 欧美岛国激情| 欧美日韩卡一卡二| 欧美激情一区二区三区蜜桃视频| 久久精品国产久精国产爱| 亚洲无线观看| 欧美一区二区三区免费大片| 午夜精品久久久久久久| 久久精品盗摄| 欧美gay视频| 欧美日韩亚洲一区二区| 国产伦精品一区二区三区视频黑人| 国产精品久久久久免费a∨大胸 | 久久伊人一区二区| 久久在线免费观看| 欧美日韩在线免费观看| 国产亚洲视频在线| 亚洲国产裸拍裸体视频在线观看乱了中文| 夜夜爽av福利精品导航| 一区二区日韩欧美| 久久久久综合| 99精品国产99久久久久久福利| 亚洲欧美另类久久久精品2019| 久久精品一区二区三区不卡| 亚洲精品免费网站| 亚洲高清影视| 日韩天堂在线观看| 久久九九精品| 99在线精品观看| 免费一级欧美片在线观看| 欧美日韩成人综合天天影院| 狠狠爱综合网| 欧美一进一出视频| 亚洲精品在线免费| 久久综合色88| 一区二区三区在线看| 亚洲在线观看免费视频| 亚洲国产日韩在线| 久久亚洲色图| 国产亚洲综合性久久久影院| 夜夜嗨网站十八久久| 美日韩丰满少妇在线观看| 亚洲一区二区在线| 欧美日韩免费观看一区=区三区| 加勒比av一区二区| 久久精品日韩| 久久本道综合色狠狠五月| 国产精品福利网站| 一区二区欧美激情| 91久久一区二区| 欧美黄色aaaa| 亚洲精品在线二区| 欧美电影美腿模特1979在线看| 欧美伊人久久| 国产一区二区三区四区五区美女 | 影音先锋亚洲精品| 欧美在线播放视频| 欧美一区二区三区视频在线观看| 亚洲七七久久综合桃花剧情介绍| 国产日韩在线播放| 欧美日韩国产不卡| 一区二区在线视频观看| 欧美在线www| 亚洲制服丝袜在线| 国产精品v欧美精品∨日韩| 日韩午夜视频在线观看| 亚洲国产欧美日韩| 久久综合色播五月| 亚洲高清不卡在线观看| 欧美va日韩va| 久热精品视频在线免费观看| 亚洲国产日韩在线| 亚洲级视频在线观看免费1级| 欧美韩日一区| 亚洲一级在线观看| 亚洲综合丁香| 在线观看三级视频欧美| 欧美a级片网站| 欧美日韩国产91| 欧美有码在线观看视频| 久久久水蜜桃av免费网站| 亚洲日本免费电影| 亚洲性感美女99在线| 欧美中文字幕在线| 久久九九免费视频| 亚洲精品美女| 亚洲制服av| 亚洲激情综合| 99精品黄色片免费大全| 狠狠色狠狠色综合日日小说| 亚洲国产精品尤物yw在线观看| 国产精品一香蕉国产线看观看| 欧美成人官网二区| 国产精品盗摄一区二区三区| 久久亚洲精品网站| 欧美日韩一区二区在线播放| 久久久久久久久久久久久9999| 免费观看成人www动漫视频| 99国产精品国产精品久久| 性欧美1819sex性高清| 99精品国产福利在线观看免费| 亚洲欧美日韩在线| 麻豆精品视频在线观看| 加勒比av一区二区| 亚洲深夜影院| 在线免费不卡视频| 亚洲综合成人在线| 日韩午夜一区| 久久精品亚洲一区二区三区浴池 | 久久国产精品久久久| 在线亚洲一区二区| 久久永久免费| 久久精品中文字幕一区二区三区| 欧美人交a欧美精品| 老鸭窝91久久精品色噜噜导演| 亚洲综合二区| 亚洲精品美女久久7777777| 久久成人精品电影| 欧美一区二区视频在线观看2020| 欧美日韩一区二区免费视频| 亚洲高清在线播放| 欧美激情精品久久久| 久久精品av麻豆的观看方式| 一区二区毛片| 女仆av观看一区| 欧美一区二区三区的| 欧美精品免费看| 亚洲国产精品久久91精品| 在线观看日韩国产| 久久久精彩视频| 久久亚裔精品欧美| 黄色影院成人| 久久久成人网| 久热国产精品| 亚洲国产第一| 欧美精品1区| 亚洲精品美女免费| 中文在线资源观看网站视频免费不卡| 欧美激情精品久久久久久| 亚洲大片av| 亚洲欧洲日产国码二区| 亚洲国产精彩中文乱码av在线播放| 在线日韩欧美| 欧美一区免费视频| 欧美在线日韩| 国产欧美精品久久| 亚洲综合视频网| 午夜精品一区二区三区四区 | 99riav国产精品| 亚洲图片你懂的| 国产精品美女视频网站| 亚洲欧美日韩人成在线播放| 亚洲欧美日韩一区在线| 国产欧美亚洲精品| 久久噜噜噜精品国产亚洲综合 | 欧美黑人多人双交| 99re热精品| 国产精品日韩在线观看| 欧美在线视频免费播放| 亚洲欧美国产不卡| 欧美成人精品在线| 亚洲第一中文字幕| 欧美片在线观看| 日韩午夜在线电影| 亚洲欧美日韩天堂| 狠狠色丁香婷婷综合久久片| 久久久久久尹人网香蕉| 亚洲免费黄色| 久久免费视频这里只有精品| 亚洲精品国久久99热| 国产精品xvideos88| 久久国产精品一区二区| 亚洲人午夜精品免费| 久久av一区二区| 亚洲人体一区| 亚洲视频观看| 欧美/亚洲一区| 中国日韩欧美久久久久久久久| 国产视频一区在线| 美女露胸一区二区三区| 亚洲高清影视| 久久www免费人成看片高清 | 欧美日韩中文字幕在线| 久久高清国产| 日韩视频国产视频| 美国十次了思思久久精品导航| 一本久久a久久免费精品不卡| 国产一区二区三区久久久| 欧美不卡一卡二卡免费版| 欧美在线啊v| 亚洲视频一二| 亚洲精品一区二区三区婷婷月| 久久资源在线| 久久久久成人网| 性色av一区二区三区| 亚洲视频在线观看三级|