回答

5

對此沒有普遍的答案,特別是因爲您尚未指定您想要移植多遠。使用開放源代碼庫的x86上的Linux將變得更容易,在MIPS32或Arduino上運行的uCos幾乎是不可能的。

首先,您顯然必須能夠讀取和解析PE格式本身,特別是您必須能夠在得到各個部分的內容和哈希他們一樣的.text,等等。數據對於深入瞭解其是如何放在一起,看看這裏:

http://msdn.microsoft.com/en-us/magazine/cc301805.aspx http://msdn.microsoft.com/en-us/magazine/ms809762.aspx

現在,你想這是便攜式,所以你可以推出自己的PE閱讀器/有限的作家,或者瀏覽一些已經做到這一點的開源項目。試試ReactOS或Mono。 或者如果你很高興運行python,試試這個http://code.google.com/p/pefile/

其次,當你在處理密碼學,數字簽名和X.驗證等。如果您對GPL感到滿意,請嘗試使用OpenSSL或CyaSSL或Botan,如果您需要BSD許可證。

驗證碼簽名的精確格式,簽名過程和驗證過程在這裏desribed: http://www.microsoft.com/whdc/winlogo/drvsign/Authenticode_PE.mspx(Authenticode_PE.docx)

這將需要相當多的代碼來拉都在一起。

+0

OpenSSL不是一個完整的加密庫 - 僅限於SSL。另一方面,[CryptoPP](http://cryptopp.com/)是一個完整的加密庫 - 他們確實有[關於X.509證書的章節](http://www.cryptopp.com/ wiki/X.509),如果這實際上是PE使用的格式。 (關於CryptoPP的好處是,它也是公有領域:) –

+4

比利:上一次我檢查了OpenSSL [加密](http://www.openssl.org/docs/crypto/crypto.html)和[X509證書處理] (http://www.openssl.org/docs/crypto/x509.html#)就好了。 – sehe

+0

@sehe:嗯..它比我想象的要多。 (也就是說,它仍然比Crpyto ++中的少得多,Crypto ++有更好的許可證) –

0

微軟Authenticode肯定不是一個大噓祕密,你可以download technical specs and more關於Authenticode如何工作。您也可以下載有關Windows PE file format的技術信息。由於您沒有清楚地說明天氣,因此您想要Linux,Mac或智能手機,我無法爲您提供適當的解決方案。但是,根據我上面提供的信息以及OpenSSL,您應該能夠創建自己的程序,以便在您選擇的語言和操作系統中執行此操作。

0

這個問題相當古老,但我爲那些仍然面臨同樣問題的人提出了我的答案。

您可以使用osslsigncode tool在Linux或其他* nix系統上驗證MS Authenticode簽名。然而,該工具只是驗證簽名本身,並不檢查證書撤銷,時間戳有效性等,儘管您可以從簽名中提取數據並手動執行。

相關問題