現在,我正在開發一個解包程序,並已進入測試階段。有時我會收到一條消息,指出解壓縮後的文件是無效的Win32可執行文件,但是它沒有提供信息。喜歡”文件。這樣我就能輕鬆地檢測到解壓縮腳本中的錯誤。
現在,我正在開發一個解包程序,並已進入測試階段。有時我會收到一條消息,指出解壓縮後的文件是無效的Win32可執行文件,但是它沒有提供信息。喜歡”文件。這樣我就能輕鬆地檢測到解壓縮腳本中的錯誤。
那裡有很多PE / Header自卸車,但據我所知沒有一個適合對圖像進行審核;他們的目標通常是信息的提取和顯示,而不是驗證。
最好的方法是用您喜歡的瑞士軍刀語言編寫一個小程序或腳本,以驗證輸出圖像的完整性,在定義規則的部分中重點關注靈活性和清晰度。在許多語言中,您都可以調用庫,例如python中的 pefile。
在網上沒有任何地方可以將所有與PE圖像有關的規則收集到綜合時尚。 Windows加載程序的當前版本並未強制執行許多規則,或者至少並非始終一致,即使在MSDN或 PE COFF規範中提到了許多規則。因此,許多包裝者和保護者不受懲罰地違反了某些現有規則。暫時。
使用相同的令牌,如果您的輸出圖像恰好在您當前的Windows版本上運行,則不能保證它將在具有不同版本,補丁程序級別或位數的另一Windows版本上運行。
除了Google之外,優秀的信息資源是 ReactOS項目和 OS dev Wiki。 p>
要特別注意的兩件事-除了標頭信息,數據目錄和節表的正確性之外,還有圖像校驗和和文件/節對齊。此外,對於某些任務(例如計算校驗和),您可以調用Microsoft imagehlp.dll中的函數。
為了快速查看您的PE,您可以始終使用Microsoft的dumpbin實用工具,該工具包含在Windows SDK(至少與編譯器一起提供的SDK,即早於當前8.1的那些SDK)和許多版本的Visual Studio中,包括免費的社區版。我還發現Daniel Pistelli的免費 PE Insider非常方便,而 CFF Explorer套件也是免費的。
PS:可能是記錄該文件的最佳資源。 PE結構的現實(相對於理論而言)是 corkami的PE Wiki。當然,這是我見過的最全面的PE文檔... ReversingLabs彙編了名為 Undocumented PECOFF的文檔,該文檔很好地概述了實際需求與理論。儘管pdf著眼於安全隱患,但它也是使PE正常工作的絕佳資源。