2012-03-03 79 views

回答

2

Google是你的朋友。搜索"7zip header"後的第一個結果。該文檔說這是7zip簽名:

BYTE kSignature[6] = {'7', 'z', 0xBC, 0xAF, 0x27, 0x1C}; 

您應該讀取該文件的前6個字節。如果該6字節序列與上面的kSignature相同,那麼該文件應該是7z。我一直在嘗試使用7z在GNU/Linux(實際上是SFX ELF文件,而不是PE)的東西。我發現在最後一塊數據中,7z簽名實際上是存在的。 hexdump都生成一個轉儲到字節數0x00057960,簽名位置爲:

0x000578f0: 37 7a bc af 27 1c 

0×37和0x7a分別是「7」和「z」的。因此,在這種情況下,簽名的偏移量爲EOF - 112個字節。

我建議你下載一個十六進制編輯器,創建一個SFX文件並測試這個偏移量是否在每個創建SFX 7z的應用程序中都是相同的。記住我已經在GNU/Linux上測試過了,所以它在Windows上可能會有所不同。

+0

我在說的是7z自解壓檔案(自解壓EXE文件)。所以這些6字節出現在7z SFX檔案,如果是在什麼偏移量? – randydom 2012-03-03 02:30:03

+0

對不起,沒有考慮到第一名。我已經編輯了我的答案。 – mfontanini 2012-03-03 03:13:58