由于多次跟蹤程序的時(shí)候碰到了,一直沒怎么理會(huì),今天出于好奇,進(jìn)去逛了下。。。很簡(jiǎn)單,原來就是分配內(nèi)存。
注釋寫的很清楚,而且很簡(jiǎn)單,所以不多做解釋了。
6E26152C > 8BFF MOV EDI,EDI
6E26152E 55 PUSH EBP
6E26152F 8BEC MOV EBP,ESP
6E261531 53 PUSH EBX
6E261532 8B5D 08 MOV EBX,DWORD PTR SS:[EBP+8] ; EBX為第一個(gè)參數(shù)
6E261535 56 PUSH ESI
6E261536 57 PUSH EDI
6E261537 53 PUSH EBX
6E261538 83CF FF OR EDI,FFFFFFFF ; EDI=-1
6E26153B FF15 6C10256E CALL DWORD PTR DS:[<&msvcrt.malloc>] ; msvcrt.malloc
6E261541 8BF0 MOV ESI,EAX ; ESI保存內(nèi)存指針
6E261543 83C4 04 ADD ESP,4 ; 堆棧平衡
6E261546 85F6 TEST ESI,ESI ; 判斷分配是否成功
6E261548 0F84 9E1E0000 JE MFC42.6E2633EC ; 如果分配失敗則跳轉(zhuǎn)
6E26154E 5F POP EDI ; 從這里可以看出6E261537H地址處的PUSH為傳參而不是寄存器保護(hù)
6E26154F 8BC6 MOV EAX,ESI ; 到了這里也就知道了MFC42.#823號(hào)函數(shù)主要就是分配內(nèi)存的作用
6E261551 5E POP ESI
6E261552 5B POP EBX
6E261553 5D POP EBP
6E261554 C3 RETN