2009-10-15 49 views
3

我有一個C#.NET應用程序。這個應用程序緊密耦合到一個硬件。認爲自動取款機,開車亭有點東西。我想爲我的應用程序提供一種方法來確保它在我們的硬件上運行。我們最初的計劃是使用WMI獲取CPU,操作系統,HD或其他硬件的序列號,對其進行數字簽名並將該簽名與軟件一起發送。然後應用程序將擁有公鑰來驗證簽名。有一個更好的方法嗎?如何將我的應用程序綁定到特定的硬件?

更新1

我們不想要一個加密狗或搭扣。系統外部沒有任何東西。

+0

你意識到,你可能會投入更多的資金和努力來防止其它硬件出現,而不是它的價值。任何真正想在沒有簽名密鑰的情況下運行軟件的人都可以刪除您的保護。如果您需要快速修復系統,您現在也正在限制您的客戶。 – 2009-10-15 20:43:02

+0

這一切都取決於情況。我們有非常特定的硬件附帶的應用程序,而不是一臺計算機,但支持.NET的嵌入式硬件硬件和軟件作爲一攬子交易,這是他們從我們這裏購買的。客戶不想執行維護,這就是爲什麼他們與我們簽訂合同和SLA ......這樣做肯定有很好的理由,但對於大多數應用程序來說並非如此......這就是說,除非您控制每個從芯片開發到軟件,你永遠無法完全保護一切。 (這也是爲什麼蘋果控制芯片的原因) – TimothyP 2012-12-27 07:50:18

+0

http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm有幫助您創建硬件鎖定的工具,但不要將其用作唯一的方法。 ..混淆/鎖定工具越受歡迎,人們投入更多的努力就是盜用它。並確保您與客戶之間有牢固的法律協議,這是最重要的事情! – TimothyP 2012-12-27 07:52:25

回答

2

是的,你會有一個半安全系統。它可以防止在不同的硬件上運行。它也會阻止某些形式的硬件維護。

像往常一樣,它不會阻止任何人反編譯和更改軟件。

1

我們通過對XML文件進行簽名來爲軟件許可做類似的事情,儘管我們的軟件沒有綁定到任何硬件。同樣的概念適用。它運作良好。

您還需要使用某種模糊處理工具來保護您的.NET代碼,我們使用{smartassembly},但還有其他幾種。

請記住,不管你做什麼,給予足夠的時間和資源,有人可以繞過它。

這並不意味着你不應該保護你的知識產權,但有一點你會收益遞減,並給你和你的客戶帶來更多的麻煩,這是值得的。

+0

沒有混淆工具是完美的。原生代碼現在甚至可以逆向工程。對於製作的每個模糊/保護工具,都可以找到它。 – IDWMaster 2011-02-22 22:34:42

相關問題