簡體   English   中英

隱藏 c# windows 應用程序源代碼

[英]Hide c# windows application source code

我使用 C# .Net 2.0 編寫了一個 Windows 應用程序,我想做一些隱藏源代碼的事情,所以當任何人使用重構工具時都看不到源代碼。 我使用了 dotfuscator 但它只是改變了函數名稱而不是所有的源代碼。

更新:我想隱藏源代碼,不是因為隱藏密鑰,而是隱藏代碼的工作方式。

謝謝,

根據定義,IL 在身體中剩余的東西方面非常具有表現力; 你只需要:

  • 找到一個更好的(閱讀:更昂貴的)混淆器
  • 將密鑰源保持在您的控制之下(例如,通過 Web 服務,因此密鑰邏輯永遠不會在客戶端)。

好吧,源代碼是您的,除非您明確提供,否則您可能只會提供已編譯的二進制文件。

現在,這些編譯后的二進制文件是 IL 代碼。 為了防止有人“反編譯”並將您的 IL 代碼逆向工程回源代碼,您需要混淆 IL 代碼。 這是通過代碼混淆器完成的。 市場上有很多。

您已經使用 dotfuscator 完成了此操作,但是,您說它只更改了函數名稱,而不是所有源代碼。 聽起來您正在使用 Visual Studio 附帶的 dotfuscator 版本。 這實際上是“社區版”,僅包含“專業版”功能的一個子集。 請參閱此鏈接以獲取社區版和專業版功能的比較矩陣。

如果您想要對代碼進行更多混淆(特別是為了防止人們使用 Reflector 等工具),您將需要 Dotfuscator 的專業版,或其他包含類似功能的代碼混淆器產品。

一旦人們接觸到您的二進制文件,他們就可以對其進行逆向工程。 編譯為字節碼(C# 和 Java)的語言更容易,編譯為特定於 CPU 的二進制文件的語言更難,但總是有可能的。 面對它。

僅符號重命名不足以阻礙對您的應用程序進行逆向工程。 您還需要控制流混淆、字符串加密、資源保護、元數據縮減、抗反射防御等。嘗試支持所有這些和更多功能的Crypto Obfuscator

為您的應用程序創建一個安裝項目,並將安裝程序像軟件一樣安裝在您朋友的計算機上。 使用 Microsoft Visual Studio 創建安裝項目有 5 個步驟。

步驟 1:創建一個示例 .Net 項目。 在以發布模式構建項目之后,我將此項目命名為“TestProject”。 第 2 步:使用右鍵單擊您的解決方案添加新項目並選擇安裝項目並將其命名為“TestSetup”。 第 3 步:右鍵單擊 setup project 和 Add primary Output,然后選擇顯示的項目。 步驟4:右鍵單擊安裝項目並選擇查看-> 文件系統-> 應用程序文件夾。 現在復制你想要在安裝文件夾中的內容。 第 5 步:現在轉到我們的項目文件夾並打開發布文件夾,您可以在此處獲取 setup.exe 文件。 雙擊“TestSetup”文件並將您的項目安裝到您和其他計算機上。

混淆軟件隱藏方法內容的長度是有限的,從根本上改變內部結構而不影響正確性(當然還有性能)是非常困難的。

值得注意的是,包含許多小方法的代碼一旦被混淆往往會變得更難理解,尤其是當采用了在方法之間共享名稱的技術時,這些方法看起來會與眼睛發生沖突,但不會與運行時發生沖突。

一些混淆器允許生成無法用任何目標語言表示的構造,例如,CIL 中允許的所有操作的集合比通過 c# 甚至 C++/CLI 表達的要多得多。 但是,這通常需要顯式設置才能啟用(因為它可能會導致問題)。 這可能會導致反編譯器失敗,但有些人會盡力而為並解決它(也許內聯它無法處理的 il)。

如果您將 pdb 與應用程序一起分發,那么由於附加符號,可以推斷出更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM