通過反編譯動態調試,vcpp的類實際上就是struct,跟delphi不一樣,它沒有類頭,並且全部的函數都直接放在函數表裏頭,跟普通的函數同樣混在一塊兒。而成員變量,則直接就在對象頭開始算起,成員變量的結尾是0xfdfdfdfd,若是沒有成員變量,則對象的開頭就是0xfdfdfdfd。javascript
舉個例子:若是有1個int成員變量,則sizeof(class)=4;若是有2個int成員變量,則sizeof(class)=8; 若是沒有,則sizeof(class)=1;java
對象指針默認經過ecx傳遞,而delphi是第一個參數傳遞。函數
目標結論以下:設計
因此想要設計一個兼容delphi對象的c文件,讓cpp看成一個類使用,是不合適的,由於它不是經過對象指針的偏移來調用成員函數的,而是直接跳轉到了靜態函數表。可是用struct調用函數指針仍是能夠的,這樣其實就不必使用cpp的類了,直接用c就能夠了,並且函數指針更加靈活,方便定義和響應事件,以及多態,有着無與倫比的靈活優點,爲何我喜歡javascript呢,由於指針函數發揮的淋漓盡致。指針
逆向其餘軟件,好比遊戲等,須要研究更多,好比虛函數等。調試
今天先這樣,之後研究了再增長。。。對象