在十六進制編輯器中查看PE文件時,我經常會在節表和第一節之間遇到一些字節,這對我來說並不合適。就我而言,爲了適應對齊,應該有一個00字節的填充。然而,這裏是演示了相反的截圖:PE文件格式 - 節表和第一節之間是什麼?
http://img163.imageshack.us/img163/2390/pequestion.png
由於原來的高亮顯示的塊是相當多的綁定導入表。但我仍然感到困惑。爲什麼這張表不在一節中?這總是如此,還是隻是某個編譯器/鏈接器的規範?我沒有找到關於這個特定問題的任何文件。一切都可以找到關於此主題基本上說:
- DOS MZ頭
- DOS存根
- PE頭
- 節表
- 第1
- 第2
- 第3
... a等等
在我遇到這個問題之前,我甚至都沒有意識到這樣的事實,即除了上面列出的那些部分之外,還可能存在事物。
[編輯]
概念證明(因爲莫克斯不相信我):
你怎麼能說突出顯示的塊是綁定導入表的一部分?您使用哪個(其他)着名的PE工具來確認此斷言? – mox
@mox嗯,這很容易。 DataDirectory數組從偏移量0x178開始,並在偏移量0x1EF(包括兩端)結束。此數組的第12個元素位於0x1D0,幷包含到Bound Import Table的RVA。如果你看看截圖,你可以很容易地看到位置指向0x2E8,這是高亮部分的一部分。我也嘗試用00s填充選擇,這會「銷燬」二進制文件(無法再啓動)。將RVA和BIT的大小設置爲0會導致二進制再次啓動,這只是另一個指示。不過,我還用LordPE加倍檢查。 – user1658887