簡単win 32逆アセンブリ学習
Windowsコードは以下の通りです.
とても简単なプログラム、実行した后に1つのウィンドウを弾いて、“こんにちは、プログラミングの世界”を表示して、タイトルは“こんにちは”です
#include<windows.h>
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
MessageBox(NULL,TEXT(" , "),TEXT(" "),0x00000000);
return 0;
}
とても简単なプログラム、実行した后に1つのウィンドウを弾いて、“こんにちは、プログラミングの世界”を表示して、タイトルは“こんにちは”です
OD :
00401005 /$ E9 06000000 jmp WinMain //
0040100A | CC int3 //
0040100B | CC int3
0040100C | CC int3
0040100D | CC int3
0040100E | CC int3
0040100F | CC int3
00401010 >|> 55 push ebp // ebp , ebp
00401011 |. 8BEC mov ebp, esp // ebp
00401013 |. 83EC 40 sub esp, 40 //
00401016 |. 53 push ebx
00401017 |. 56 push esi
00401018 |. 57 push edi // ebx,esi,edi , , 3
00401019 |. 8D7D C0 lea edi, dword ptr [ebp-40] // ebp-40 edi,
0040101C |. B9 10000000 mov ecx, 10
00401021 |. B8 CCCCCCCC mov eax, CCCCCCCC
00401026 |. F3:AB rep stos dword ptr es:[edi] // 3 CC, int 3
00401028 |. 8BF4 mov esi, esp // esi esp
0040102A |. 6A 00 push 0 ; //Style = MB_OK|MB_APPLMODAL ,messagebox 4
0040102C |. 68 30004200 push 00420030 ; //Title = " " messagebox 3
00401031 |. 68 1C004200 push 0042001C ; //Text = " ?,AC," ",BD,"? messagebox 2
00401036 |. 6A 00 push 0 ; //hOwner = NULL messagebox 1
00401038 |. FF15 94524200 call dword ptr [<&USER32.MessageBoxA>>; //MessageBoxA
0040103E |. 3BF4 cmp esi, esp // esi esp ,
00401040 |. E8 3B000000 call _chkesp // esp
00401045 |. 33C0 xor eax, eax //eax
00401047 |. 5F pop edi
00401048 |. 5E pop esi
00401049 |. 5B pop ebx //
0040104A |. 83C4 40 add esp, 40
0040104D |. 3BEC cmp ebp, esp // esp
0040104F |. E8 2C000000 call _chkesp // esp,debug
00401054 |. 8BE5 mov esp, ebp // esp
00401056 |. 5D pop ebp // ebp
00401057 \. C2 1000 retn 10 //esp+16