所有網頁 圖片 影片 地圖 新聞 網誌搜尋 Gmail 更多 »
最近造訪的群組 | 說明 | 登入
Google 網上論壇首頁
用最精簡的 exe 來看 PE 結構
目前本群組有太多主題設為優先顯示。要優先顯示這個主題,請將其他主題的這個選項取消。
在處理您的要求時發生錯誤。請再試一次。
標幟
  1 則留言 - 全部摺疊  -  將全文翻譯為 已翻譯 (查看所有原文)
您要留言的群組是 Usenet 群組。在此群組留言,網際網路上的任何使用者將可以看到您的電郵地址。
您的回覆郵件尚未寄出。
您已成功留言
 
寄件人:
收件人:
副本:
後續追蹤對象:
新增副本 | 新增後續追蹤對象 | 編輯主旨
主旨:
驗證:
為了確認,請輸入您在以下圖片中看到的字元,或輸入您按下存取圖示時所聽到的號碼。 注意聽並輸入您聽到的號碼
 
hcchen (gmail)  
檢視個人資料   翻譯為 已翻譯 (查看原文)
 更多選項 2008年10月29日, 下午9時46分
寄件人: "hcchen (gmail)" <hcchen5...@gmail.com>
日期: Wed, 29 Oct 2008 06:46:33 -0700 (PDT)
當地時間: 2008年10月29日(星期三) 下午9時46分
主旨: 用最精簡的 exe 來看 PE 結構
試寫一個最精簡的 win32 exe program. 他啥事都不做,一上手就 NOP RET. 純粹為了看看 PE 結構而已。

Assembler : masm32
Environment :
        SET PATH=c:\masm32\BIN;c:\masm32;c:\Windows\System32;c:
\Windows;
        @rem MASM32
        SET INCLUDE=c:\masm32\INCLUDE;
        SET LIB=c:\masm32\LIB;
        SET ML=/coff /Fm /link /SUBSYSTEM:WINDOWS
        @rem NTSD
        SET _NT_SYMBOL_PATH=SRV*D:\symbols*http://msdl.microsoft.com/
download/symbols

Source code :
                option  casemap:none    ;01
                .386                    ;02
                .model  flat,stdcall    ;03
        include         windows.inc     ;04
        include         kernel32.inc    ;05
        include         user32.inc      ;06
        includelib      kernel32.lib    ;07
        includelib      user32.lib      ;08

        .code
        start:  nop
                ret
        end     start

Assemble - link :
        D:\Learnings\masm32\Pinocchio01>ml pinocchio01a.asm
        Microsoft (R) Macro Assembler Version 6.14.8444
        Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.

         Assembling: pinocchio01a.asm
        Microsoft (R) Incremental Linker Version 5.12.8078
        Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

        /SUBSYSTEM:WINDOWS
        "pinocchio01a.obj"
        "/OUT:pinocchio01a.exe"
        "/MAP:pinocchio01a.map"

Result :
        Pinocchio01a.exe  1,024 bytes

Hex dump :
        -m 100 1000 5000:0
        -d 5000:0 3FF
        5000:0000  4D 5A 90 00 03 00 00 00-04 00 00 00 FF FF 00 00
MZ..............  <=== 就是這裡了
        5000:0010  B8 00 00 00 00 00 00 00-40 00 00 00 34 00 FE
0A   ........@...4...
        5000:0020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0030  00 00 00 00 00 00 00 00-00 00 00 00 A8 00 00
00   ................
        5000:0040  0E 1F BA 0E 00 B4 09 CD-21 B8 01 4C CD 21 54
68   ........!..L.!Th
        5000:0050  69 73 20 70 72 6F 67 72-61 6D 20 63 61 6E 6E 6F
is program canno
        5000:0060  74 20 62 65 20 72 75 6E-20 69 6E 20 44 4F 53 20   t
be run in DOS
        5000:0070  6D 6F 64 65 2E 0D 0D 0A-24 00 00 00 00 00 00 00
mode....$.......
        5000:0080  5D 17 1D DB 19 76 73 88-19 76 73 88 19 76 73
88   ]....vs..vs..vs.
        5000:0090  E5 56 61 88 18 76 73 88-52 69 63 68 19 76 73
88   .Va..vs.Rich.vs.
        5000:00A0  00 00 00 00 00 00 00 00-50 45 00 00 4C 01 01
00   ........PE..L...
        5000:00B0  8D 5F 08 49 00 00 00 00-00 00 00 00 E0 00 0F
01   ._.I............
        5000:00C0  0B 01 05 0C 00 02 00 00-00 00 00 00 00 00 00
00   ................
        5000:00D0  00 10 00 00 00 10 00 00-00 20 00 00 00 00 40
00   ......... ....@.
        5000:00E0  00 10 00 00 00 02 00 00-04 00 00 00 00 00 00
00   ................
        5000:00F0  04 00 00 00 00 00 00 00-00 20 00 00 00 02 00
00   ......... ......
        5000:0100  00 00 00 00 02 00 00 00-00 00 10 00 00 10 00
00   ................
        5000:0110  00 00 10 00 00 10 00 00-00 00 00 00 10 00 00
00   ................
        5000:0120  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0130  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0140  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0150  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0160  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0170  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0180  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0190  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:01A0  2E 74 65 78 74 00 00 00-02 00 00 00 00 10 00
00   .text...........
        5000:01B0  00 02 00 00 00 02 00 00-00 00 00 00 00 00 00
00   ................
        5000:01C0  00 00 00 00 20 00 00 60-00 00 00 00 00 00 00
00   .... ..`........
        5000:01D0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:01E0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:01F0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0200  90 C3 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................ <== 放是放這裡,到時被 load 到 $401000 處去執行
        5000:0210  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0220  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0230  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0240  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0250  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0260  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0270  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0280  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0290  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:02A0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:02B0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:02C0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:02D0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:02E0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:02F0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0300  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0310  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0320  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0330  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0340  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0350  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0360  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0370  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0380  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:0390  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:03A0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:03B0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:03C0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:03D0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:03E0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        5000:03F0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00
00   ................
        接下來都是亂碼

See map file :
         pinocchio01a

         Timestamp is 49085f8d (Wed Oct 29 21:05:17 2008)

         Preferred load address is 00400000

         Start         Length     Name                   Class
         0001:00000000 00000002H .text                   CODE

          Address         Publics by Value              Rva+Base
Lib:Object

         0001:00000000       _start                     00401000 f
pinocchio01a.obj  <=== actual entry point

         entry point at        0001:00000000

         Static symbols

用 NTSD 瞧一瞧
        0:000> lm
        start    end        module name
        00400000 00402000   image00400000     (deferred)
        7c800000 7c91f000   kernel32     (deferred)
        7c920000 7c9b4000   ntdll        (export symbols)
ntdll.dll

        0:000> u 401000
        *** WARNING: Unable to verify checksum for image00400000
        *** ERROR: Module load completed but symbols could not be
loaded for image004000
        00
        image00400000+1000:
        00401000 90               nop  <==== correct
        00401001 c3               ret
        00401002 0000             add     [eax],al
        00401004 0000             add     [eax],al
        00401006 0000             add     [eax],al
        00401008 0000             add     [eax],al
        0040100a 0000             add     [eax],al
        0040100c 0000             add     [eax],al
        0:000> g 401000
        eax=00000000 ebx=7ffda000 ecx=0012ffb0 edx=7c92e4f4
esi=0007f7ec edi=00000000
        eip=00401000 esp=0012ffc4 ebp=0012fff0 iopl=0         nv up ei
pl zr na po nc
        cs=001b  ss=0023  ds=0023  es=0023  fs=003b
gs=0000             efl=00000246
        image00400000+1000:
        00401000 90               nop
        0:000> t
        eax=00000000 ebx=7ffda000 ecx=0012ffb0 edx=7c92e4f4
esi=0007f7ec edi=00000000
        eip=00401001 esp=0012ffc4 ebp=0012fff0 iopl=0         nv up ei
pl zr na po nc
        cs=001b  ss=0023  ds=0023  es=0023  fs=003b
gs=0000             efl=00000246
        image00400000+1001:
        00401001 c3               ret
        0:000> t
        eax=00000000 ebx=7ffda000 ecx=0012ffb0 edx=7c92e4f4
esi=0007f7ec edi=00000000
        eip=7c817067 esp=0012ffc8 ebp=0012fff0 iopl=0         nv up ei
pl zr na po nc
        cs=001b  ss=0023  ds=0023  es=0023  fs=003b
gs=0000             efl=00000246
        *** ERROR: Symbol file could not be found.  Defaulted to
export symbols for C:\W
        INDOWS\system32\kernel32.dll -
        kernel32!RegisterWaitForInputIdle+49:
        7c817067 50               push    eax
        0:000> k
        ChildEBP RetAddr
        WARNING: Stack unwind information not available. Following
frames may be wrong.
        0012fff0 00000000 kernel32!RegisterWaitForInputIdle+0x49
        0:000>


    回覆作者    轉寄  
您必須先登入才能張貼訊息。
若要張貼訊息,您必須先加入此群組
請在留言之前更新您訂閱設定網頁上的暱稱。
您沒有留言所需的權限。
無其他留言
« 返回討論主題 « 較新的主題     較舊的主題 »

建立群組 - Google 網上論壇 - Google 首頁 - 服務條款 - 隱私權政策
©2009 Google