簡単win 32逆アセンブリ学習


Windowsコードは以下の通りです.
#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