是否可以使用Assembly.LoadFrom重載和Evidence參數來確保程序集是強命名的?我希望能夠指定程序集名稱,區域性,版本和公鑰標記。如果這些信息中的任何一個與組件不匹配,則會導致加載失敗。Assembly.LoadFrom - 使用證據超載來驗證強名稱簽名
1
A
回答
0
我發現了另一種方法來做到這一點。
var assemblyName = new AssemblyName(<fully qualified type name>);
assemblyName.CodeBase = <path to assembly>
Assembly.Load(assemblyName);
2
您可以加載它後得到議會的公共密鑰 - 如果它成功加載並具有公共密鑰,那麼它的強名稱:
Assembly assembly = Assembly.LoadFrom (...);
byte[] pk = assembly.GetName().GetPublicKey();
更妙的是,檢查裝配的公鑰和版本信息之前加載它:
AssemblyName an = AssemblyName.GetAssemblyName ("myfile.exe");
byte[] publicKey = an.GetPublicKey();
CultureInfo culture = an.CultureInfo;
Version version = an.Version;
如果的getpublickey()返回一個非空值,然後組裝成功加載,它有一個有效的強名稱。
1
我有辦法打破修補System.Windows.Forms.dll的強名稱驗證。如果我正在使用它,你可以做的事情就不多了。我的詭計需要完全信任。
我所做的就是修補dll,部署修補過的dll,修改它,然後修補加載程序以獲取修補過的ngen圖像而不是原始圖像。我所能做的就是破壞股票的dll。 (我實際測試過這條路,並決定有可能打破別人的軟件是一個糟糕的選擇。)
我不是說這是個好主意。我說這取決於從Assembly.Load驗證簽名是一個壞主意。
相關問題
- 1. Microsoft.IdentityModel.Logging:強名稱簽名無法驗證
- 2. 強名稱簽名無法驗證
- 3. Boost簽名(驗證下載)
- 4. 驗證名稱
- 5. 驗證簽名
- 6. 使用DPAPI簽名和驗證數據
- 7. Facebook.Web.Contracts - 強簽名無法驗證?
- 8. 驗證X509證書時驗證簽名
- 9. SSL證書籤名驗證
- 10. Twitter名稱驗證
- 11. Javascript名稱驗證
- 12. Javascript - 驗證名稱
- 13. 驗證名稱TextBoxes
- 14. Xades4j簽名驗證
- 15. C#驗證簽名
- 16. 驗證Jar簽名
- 17. ECDSA簽名驗證
- 18. XML簽名驗證
- 19. ElGamal簽名驗證
- 20. 簽名板驗證
- 21. 用pem驗證簽名鏈
- 22. 爲什麼Openssl簽名驗證需要原始文件來驗證其簽名?
- 23. 錯誤 - 強名稱簽名無法驗證。當我運行應用程序
- 24. jQuery驗證名稱= 「名稱[]」 不工作
- 25. 驗證Java簽名類簽名與OpenSSL
- 26. Android:DSA簽名 - 簽名並驗證
- 27. 正則表達式來驗證名稱
- 28. openssl命令行來驗證簽名
- 29. 哪個結果驗證簽名的XML - 核心驗證,簽名驗證和引用驗證
- 30. PHP作曲家下載簽名驗證
您是否延遲簽名?如果是這樣,這隻會在您禁用該組件的強名稱驗證(sn -Vr)的機器上運行。否則,你在做什麼? .NET框架程序集的私鑰是否泄露? – 2009-05-01 02:53:33