2009-07-16 76 views
4

任何人都可以推薦什麼是加密可執行文件的好方法嗎?我試圖使用AxCrypt,但我不喜歡這種用法,即您指定了密碼,啓動exe的人需要指定密碼。有沒有辦法加密一次,用戶只需運行該exe文件而不指定任何密碼?加密可執行文件

+3

如果你想跳過密碼,然後什麼用的加密? – 2009-07-16 06:48:18

+0

我想從執行者的角度跳過它。所以可執行代碼混亂不堪,他們很難進行逆向工程。 – Farooq 2009-07-16 07:14:33

回答

8

它基本沒有意義。如果它是一個.NET或Java程序,混淆器可以提高性能並減少可執行文件的大小,並使其難以進行反向工程。包裝員可以減少可執行文件大小簽名可以確保您的用戶構建了該程序。但是爲了隱藏它的可執行代碼而對可執行文件進行加密是毫無意義的。

0

我認爲你應該使用software使用公鑰和私鑰。 Here是關於它如何工作的更多信息。

0

如果您只希望特定的用戶運行該exe然後,您可以在Windows下定義策略,只允許您爲特定用戶運行它。

但是如果你想隱藏代碼,那麼: 因爲你還沒有提到你用來製作exe的語言。如果它的c/C++已經足夠加密,那麼需要一些工作來從中獲取代碼。如果它的java或csharp中有可以使用的混淆器。這會使得難以從exe中獲取代碼。

6

知道如何解密自己的程序將包含黑客需要破壞程序的所有信息。你正在用鑰匙交出鎖。不過,我們假設您想爲進入您的程序設置一個小屏障。也許你在遊戲中有作弊碼,並且你不希望有人能夠只是run 'strings' over your program並查看它們。

我建議用程序打包你的程序,如UPX。這可以進一步混淆你的程序在磁盤上。你的基本審問技巧只會看到微小的解壓縮器。然而,一個堅定的黑客會很快認出壓縮機程序並對其進行解壓縮。無論哪種情況,一旦程序在內存中運行,就可以獲取進程的核心轉儲,或者將調試器附加到該進程中。在大多數硬件上,你可以做的事情不多。

1

你傢伙不明白這個問題,程序員這樣想是正常的。但作爲道德黑客明確表示,他想支付殺毒軟件不隱藏代碼,無論如何,你可以使用Visual Basic。

加密使用此代碼

Public Function TripleDES_Encrypt(ByVal input As String, ByVal pass As String) As String 
    Dim TripleDES As New System.Security.Cryptography.TripleDESCryptoServiceProvider 
    Dim Hash_TripleDES As New System.Security.Cryptography.MD5CryptoServiceProvider 
    Dim encrypted As String = "" 
    Try 
     Dim hash(23) As Byte 
     Dim temp As Byte() = Hash_TripleDES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass)) 
     Array.Copy(temp, 0, hash, 0, 16) 
     Array.Copy(temp, 0, hash, 15, 8) 
     TripleDES.Key = hash 
     TripleDES.Mode = Security.Cryptography.CipherMode.ECB 
     Dim DESEncrypter As System.Security.Cryptography.ICryptoTransform = TripleDES.CreateEncryptor 
     Dim Buffer As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(input) 
     encrypted = Convert.ToBase64String(DESEncrypter.TransformFinalBlock(Buffer, 0, Buffer.Length)) 
     Return encrypted 
    Catch ex As Exception 
    End Try 
End Function 

解密

Public Function TripleDES_Decrypt(ByVal input As String, ByVal pass As String) As String 
    Dim TripleDES As New System.Security.Cryptography.TripleDESCryptoServiceProvider 
    Dim Hash_TripleDES As New System.Security.Cryptography.MD5CryptoServiceProvider 
    Dim decrypted As String = "" 
    Try 
     Dim hash(23) As Byte 
     Dim temp As Byte() = Hash_TripleDES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass)) 
     Array.Copy(temp, 0, hash, 0, 16) 
     Array.Copy(temp, 0, hash, 15, 8) 
     TripleDES.Key = hash 
     TripleDES.Mode = Security.Cryptography.CipherMode.ECB 
     Dim DESDecrypter As System.Security.Cryptography.ICryptoTransform = TripleDES.CreateDecryptor 
     Dim Buffer As Byte() = Convert.FromBase64String(input) 
     decrypted = System.Text.ASCIIEncoding.ASCII.GetString(DESDecrypter.TransformFinalBlock(Buffer, 0, Buffer.Length)) 
     Return decrypted 
    Catch ex As Exception 
    End Try 
End Function