void getmemberfuncaddr_vc6(dword& addr,fun f)
ut; ut._f = f;
addr = ut._t;
}//呼叫
dword dwaddrptr;getmemberfuncaddr_vc6(dwaddrptr, &cinstall_mfcdlg::continueexe );
//反彙編**release版
//函式首位址
00401570 $ 83ec 08 sub esp,0x8
00401573 . 53 push ebx
00401574 . 56 push esi
00401575 . 57 push edi
00401576 . 8d4424 10 lea eax,dword ptr ss:[esp+0x10]
0040157a . 68 70154000 push server.00401570 ; 入口位址
0040157f . 50 push eax
00401580 . 8bf9 mov edi,ecx
00401582 . e8 d9ffffff call server.00401560
//反彙編**debug版
//函式首位址
004e2f49 $ /e9 d2180100 jmp install_.cinstall_mfcdlg::continueexeafilelecontrolsit>(相比release版多了乙個jmp)
004f4820 > > \55 push ebp
004f4821 . 8bec mov ebp,esp
004f4823 . 81ec 98010000 sub esp,0x198
004f4829 . 53 push ebx
004f482a . 56 push esi
004f482b . 57 push edi
004f482c . 51 push ecx
004f482d . 8dbd 68feffff lea edi,dword ptr ss:[ebp-0x198]
004f4833 . b9 66000000 mov ecx,0x66
004f4838 . b8 cccccccc mov eax,0xcccccccc
004f483d . f3:ab rep stos dword ptr es:[edi]
004f483f . 59 pop ecx
004f4840 . 894d f8 mov dword ptr ss:[ebp-0x8],ecx
004f4843 . c745 ec 492f4>mov dword ptr ss:[ebp-0x14],install_.004e2f49 ; 入口位址
004f484a . c745 e0 00000>mov dword ptr ss:[ebp-0x20],0x0
004f4851 ? 68 492f4e00 push install_.004e2f49 (這個位址變了) ; 入口位址
004f4856 ? 8d45 d4 lea eax,dword ptr ss:[ebp-0x2c]
004f4859 ? 50 push eax
004f485a ? e8 9eecfeff call install_.004e34fd
Delphi 你不知道的函式
技術交流,dh講解.在sysutils.pas有幾個函式,以前我也沒有看見過,今天看原始碼的時候無意間發現了.function gdal longword type tdvclal array 0.3 of longword pdvclal tdvclal var p pointer a1,a2 l...
你所不知道的main()函式
我通常會把main函式定義成 void main 雖然這在vc等編譯器裡也能通過,但是這個是不對的。c 之父 bjarne stroustrup 在他的主頁上的 faq 中明確地寫著 the definition void main is not and never has been c nor h...
關於建構函式,也許你不知道的
首先看段 分析總結 為什麼使用1和2兩種不同的建構函式,執行的時間有那麼大的差距,2的執行時間差不多是1的兩倍 在我的機器上1的時間是313 2的時間是625 原來建構函式中蘊含了很多的奧秘 首先在建構函式中,在執行函式體之前 注意 還有很多隱藏的操作 如果有初始化列表,則先執行初始化列表,再進入執...