Press "Enter" to skip to content

Category: Windows

PE格式研究(1)

1.進程的載入 當我們Double click一個文件時 , 系統會跟據文件的附檔名來選擇一個合適的程序開啟 我們可以在[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts]中看到所有的關聯 如果是exe的話 , 系統會啟用一個Loader , 檢查MZ Header是否存在 , 如果存在的話則會繼續找Peheader , 若2個都不存在則是Dos 16位的程式 , 若只存在MZ Header 不存在Pe header則不是一個有效的pe文件 2.PE結構 以下是Dos Header的結構 public unsafe struct IMAGE_DOS_HEADER { //DOS .EXE header public ushort e_magic; //0x0 // Magic number public ushort e_cblp; //0x2 // Bytes on last page offile public ushort e_cp; //0x4 // Pages infile public ushort e_crlc; //0x6 // Relocations public ushort e_cparhdr; //0x8 // Size of header inparagraphs public ushorte_minalloc; //0xA // Minimum extra paragraphs needed public ushorte_maxalloc; //0xC // Maximum extra paragraphs needed public ushort e_ss; //;0xE // Initial(relative) SS value public ushort e_sp; //0x10 // InitialSP value public ushort e_csum; //0x12 // Checksum public ushort e_ip; //0x14 // InitialIP value public ushort e_cs; //0x16 // Initial(relative) CS value public ushort e_lfarlc; //0x18 // File address of relocation table public ushort e_ovno; //0x1A // Overlay number //[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4)] public fixed ushorte_res[4]; //0x1C // Reserved words public ushort e_oemid; //0x24 // OEM identifier (for e_oeminfo) public ushort e_oeminfo; //0x26 // OEMinformation; e_oemid specific // [MarshalAsAttribute(UnmanagedType.ByValArray,SizeConst = 10)] public fixed ushorte_res2 [10]; //0x28 // Reserved words public uint e_lfanew; //0x3C // File address of new exe header } 根據以上結構 , 寫出一小程式當是練手

Comments closed