2013-01-14 53 views
0

我需要我的程序是安全的,因爲它的內容包括像IP這樣的私人信息(如果您必須知道的話,私人IRC聊天)。我的計劃是讀取程序的字節,然後創建一個像AES這樣的對稱加密算法來加密字節數組,以提高安全性。我添加了其他一些可以處理調試和仿真器的小事情。然後,我將使用codedom創建我的存根,以「攜帶」這些加密的字節。有兩種方法可以「攜帶」代碼:「攜帶」字節並在c#中運行它的方法?

  1. 將加密的字節追加到存根以便解密,寫入和運行。 (被稱爲丟棄)
  2. 將它添加到存根的資源,所以它可以解密並加載它,所以它然後能夠在內存中運行它。

我可以通過添加資源然後解密,寫入和運行或追加然後解密,加載並在內存中運行4種方式。我也可以在代碼中做出自己的混淆,但我懷疑它會產生多大的影響。

方法2似乎被人們濫用,並被反病毒軟件檢測到,每次調試時都會讓您的項目被防病毒攔截,真的很煩人。足夠的藉口對於用戶而言只是在所有程序正在做的時候都會產生錯誤的肯定,以免被諸如紅門反射器之類的程序輕易拆卸。 包括數據庫信息,例如如果反彙編,SQL登錄方法仍將進行分析:

有沒有更多的方法來做到這一點?

+3

不能在您的executeable敏感信息,因爲它可以在任何時候進行逆向工程。有**沒有**的方式來保護你的執行從反向工程beeing。 – GameScripting

+2

私人IP地址?任何人都可以在解密代碼後看到與TcpMon這樣的工具一起使用?按順序仔細分析威脅分析。 –

+0

@Hans:在上下文中,我認爲IP =「知識產權」而不是「互聯網協議地址」。但我可能是錯的。取決於「私人IRC聊天」是指「機密聊天記錄」還是「建立新聊天的連接信息」 –

回答

0

SecureString怎麼樣?看起來像這樣可以在程序中隱藏信息而不用費心費力。如果在執行過程中內存被轉儲,那麼數據將被加密。

+1

他/他在哪裏存儲將在運行時轉換爲'SecureString'的字符串? – GameScripting

+0

啊,所以我可以使用這兩個IP和個人信息,也是對稱密碼更安全,好主意。 –

+0

這可能可能會讓它變得更難一些。它不可能使某人得到這些信息是不可能的(或者甚至是不切實際的)。 – Servy

2

有沒有辦法做你所描述的。擺脫它。


另一種方式做這樣的事情是將具有與用戶必須針對其驗證一個web服務然後發送通過安全通道(例如SSL/TLS)的敏感信息。

的第二種方法可能是你

  1. Enrypt信息
  2. 嵌入加密版本的敏感信息進入executeable
  3. 詢問用戶在運行時的對稱密鑰(例如,他有爲數據輸入「密碼」)
  4. 使用對稱密鑰解密信息
  5. 使用信息

這裏的很大的缺點是,如果對稱密鑰(例如密碼)以任何方式被竊取,攻擊者就可以獲得所有的加密信息。

+0

所以我使用用戶的密碼來加密數據。因此,我可以使用不對稱加密,而不是對少量數據有用。 –

+0

如果你想使用非對稱加密,你將不得不將私鑰存儲在某個地方**,並且可執行文件不適合這樣做**。 – GameScripting

+0

不,不,我知道這一點。我會用公鑰加密數據,然後用戶將使用他們可以在線獲得的私鑰。 –

相關問題