|
*停權中*
|
請教一個VC++的問題
原始碼:
代碼:
void Fun()
{
__asm cmp ecx, 0x4000
__asm jnz NO_Trinity
__asm push 0x1E
__asm push offset STRS_TRINITY_Tutorial
__asm lea ecx, [ebp-0x20]
caddr = 0x004040E0;
__asm call caddr
編譯後變成這樣:
void Fun OP 開頭
代碼:
10001360 T> > \55 push ebp
10001361 . 8BEC mov ebp,esp
10001363 . 83EC 40 sub esp,0x40
10001366 . 53 push ebx
10001367 . 56 push esi
10001368 . 57 push edi
10001369 . 8D7D C0 lea edi,dword ptr ss:[ebp-0x40]
1000136C . B9 10000000 mov ecx,0x10
10001371 . B8 CCCCCCCC mov eax,0xCCCCCCCC
10001376 . F3:AB rep stos dword ptr es:[edi]
10001378 . 81F9 00400000 cmp ecx,0x4000 ; 這裡是 ASM 開始
1000137E . 0F85 B7000000 jnz Trinity.1000143B
10001384 . 6A 1E push 0x1E
10001386 . 68 80D00310 push offset Trinity.STRS_TRINITY_Tutorial
1000138B . 8D4D E0 lea ecx,dword ptr ss:[ebp-0x20]
1000138E . C705 D8F10310 E0404000 mov dword ptr ds:[caddr],0x4040E0
10001398 . FF15 D8F10310 call dword ptr ds:[caddr]
我要編譯後開頭就是 cmp ecx,0x4000 , 不要 10001360 - 10001376 那段, 這樣該怎麼定義 fun , 用 void 不對吧 ?
|