2016-05-16 29 views
0

我有一個.net項目,它有很多模塊,也有一些.jar文件。我還爲安裝創建了一個.msi設置。
這個應用程序實際上是我們公司的IP(內部產品),它有時會在客戶端環境中安裝一段時間。
我們希望確保產品代碼的安全,以便沒有人知道它是如何工作的,因爲我們擁有第三方許可(safenet),但問題是他們沒有提供對.jar中存在的所有方法的加密(有大約1000種方法)。

只是我想知道有沒有什麼辦法來保護我們的應用程序代碼免去編譯?還是有什麼辦法來混淆代碼,以便反編譯不起作用?
編輯:或者是否有任何工具(授權工具)提供這種設施?

在此先感謝。安裝文件的加密/混淆(.dll,.jar)

回答

1

對不起,但是隱藏程序的工作方式是不可能的。如果機器可以運行它,它可以被反編譯。例如在Java中混淆​​的最常用的方法是:

  • 名稱混淆
  • 流混淆
  • 不透明謂詞

在這些事情字節碼級別沒有如果能阻止一個人,他們致力於弄清楚你的產品是如何工作的。命名在字節碼級無關緊要,可以使用自動化工具對流混淆進行修補,同樣適用於不透明謂詞。大部分情況同樣適用於.Net框架。

但是,這些功能確實會阻止您的平均腳本小子。所以雖然他們不完美,但他們是值得的。如果你想要一個免費的混淆替代方案,你可以查看Proguard,儘管它只提供名稱混淆。具有流動和不透明特徵的混淆器通常是昂貴的。

2

我爲複製保護公司工作。我會盡我所能,不要因爲我的工作而受到偏見。

是的,保護是可能的,如果你願意,你可以使黑客非常困難。將不可能打破你的保護?不,所有的代碼都可以被破壞!但是,越好的保護,越難破解,越少的黑客將他們的手放在你的產品上。

有幾種方法可以停止調試器。最簡單的是測試代碼是否以正常的速度處理,如果不是的話,那是因爲有人正在調試你的代碼,並用步驟執行代碼。然後你的代碼應該優雅地終止程序來停止你的軟件的反編譯。

我的一個同事寫了這篇文章複製保護的基本知識:All About Copy Protection 查找「調試補漏」,如果你不想把它讀完了:)