2012-03-11 104 views

回答

4

沒有簡單的方法可以在不破壞文件格式的情況下將其刪除。

但是艾姆,發現this

+0

我可以打破文件格式,但我需要知道如何做到這一點,而不會破壞exe。 – user1232138 2012-03-11 13:41:31

+1

如果你打破文件格式,那麼它不再是真正的PE文件。您可以提供自定義存根。 – 2012-03-11 15:11:18

7

刪除Dos存根與Dos標題無關。是的,可以刪除Dos Stub(因爲它不再使用)。您甚至可以將Dos標頭的大小減小到最小值(MZ +跳轉到PE標頭)。但是你不能完全刪除Dos標頭。否則,Windows加載程序將拒絕啓動您的映像如果MZ和跳轉到PE頭缺失。

+0

您可以使用PeStudio(http://www.winitor.com)檢索任何可執行映像的DOS存根的實際大小。 – mox 2012-09-23 10:59:29

+0

請降低我的答案的人,請保持公平,並對downvote發表評論!謝謝。 – mox 2013-12-30 12:41:38

13

PE文件必須以IMAGE_DOS_HEADER開頭,後面跟着定義現代PE字段的IMAGE_NT_HEADERS結構。

的IMAGE_DOS_HEADER有兩個必填字段 - e_magic必須持有價值IMAGE_DOS_SIGNATURE(看起來像「MZ」在ASCII),並從文件開始到IMAGE_NT_HEADERS開始e_lfanew必須偏移。

除了這兩個字段,IMAGE_DOS_HEADER的其餘部分對於Windows過去的16位Windows是可選的,可以爲零,而DOS存根是可選的,可以省略。

最小的一致性PE文件以IMAGE_DOS_HEADER開頭,其中e_magic設置爲IMAGE_DOS_SIGNATURE,e_lfanew設置爲sizeof(IMAGE_DOS_HEADER),緊接着IMAGE_NT_HEADERS。

0

您不能將Dos標題的大小減小到「最小」。不幸的是,長度字段是IMAGE_DOS_HEADER中的最後一個字段。因此它有64字節的固定大小。