Windows原理常見面試題

來源:互聯網
上載者:User

標籤:Windows原理

IMAGE_OPTIONAL_HEADER結構如下:

typedef struct _IMAGE_OPTIONAL_HEADER  {      //       // Standard fields.         //       WORD    Magic;              // 標誌字, ROM 映像(0107h),普通可執行檔(010Bh)       BYTE    MajorLinkerVersion;     // 連結程式的主要版本號       BYTE    MinorLinkerVersion;     // 連結程式的次版本號碼       DWORD   SizeOfCode;         // 所有含代碼的節的總大小       DWORD   SizeOfInitializedData;          // 所有含已初始化資料的節的總大小       DWORD   SizeOfUninitializedData;        // 所有含未初始化資料的節的大小       DWORD   AddressOfEntryPoint;        // 程式執行入口RVA       DWORD   BaseOfCode;         // 代碼的區塊的起始RVA       DWORD   BaseOfData;         // 資料的區塊的起始RVA       //       // NT additional fields.    以下是屬於NT結構增加的領域。       //       DWORD   ImageBase;          // 程式的首選裝載地址       DWORD   SectionAlignment;       // 記憶體中的區塊的對齊大小       DWORD   FileAlignment;          // 檔案中的區塊的對齊大小       WORD    MajorOperatingSystemVersion;    // 要求作業系統最低版本號碼的主要版本號       WORD    MinorOperatingSystemVersion;    // 要求作業系統最低版本號碼的副版本號碼       WORD    MajorImageVersion;      // 可運行於作業系統的主要版本號       WORD    MinorImageVersion;      // 可運行於作業系統的次版本號碼       WORD    MajorSubsystemVersion;      // 要求最低子系統版本的主要版本號       WORD    MinorSubsystemVersion;      // 要求最低子系統版本的次版本號碼       DWORD   Win32VersionValue;      // 莫須有欄位,不被病毒利用的話一般為0       DWORD   SizeOfImage;            // 映像裝入記憶體後的總尺寸       DWORD   SizeOfHeaders;          // 所有頭+ 區塊表的尺寸大小       DWORD   CheckSum;           // 映像的校檢和       WORD    Subsystem;          // 可執行檔期望的子系統       WORD    DllCharacteristics;     // DllMain()函數何時被調用,預設為0       DWORD   SizeOfStackReserve;     // 初始化時的棧大小       DWORD   SizeOfStackCommit;      // 初始化時實際提交的棧大小       DWORD   SizeOfHeapReserve;      // 初始化時保留的堆大小       DWORD   SizeOfHeapCommit;       // 初始化時實際提交的堆大小       DWORD   LoaderFlags;            // 與調試有關,預設為0        DWORD   NumberOfRvaAndSizes;        // 下邊資料目錄的項數,這個欄位自Windows NT 發布以來        // 一直是16       IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];      // 資料目錄表   } IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;  

1.擴充頭中的ImageBase是做什麼用的?
答:預設載入基址(如果沒有載入到這個地址,會發生重定位)

2.擴充頭中的AddressOfEntryPoint是做什麼用的?
答:程式開始執行的相對虛擬位址(RVA),也叫OEP,Orginal Entry Point,源進入點

3.擴充頭的大小是固定的嗎?為何NT頭要儲存擴充頭的大小?
答:擴充頭的大小是不確定的,

Windows原理常見面試題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.