Encriptação para o executável
5 answers
Um programa que saiba decifrar a si próprio conterá toda a informação que um hacker precisa para comprometer o programa. Estás a distribuir a fechadura com a chave. No entanto, vamos assumir que você quer colocar uma pequena barreira para entrar no seu programa. Talvez você tenha códigos de batota em seu jogo e você não quer que alguém seja capaz de apenas {[[2]}Executar 'strings' sobre o seu programa e vê-los.
O que eu sugiro é empacotar o seu programa com um programa como UPX . Presente pode ofuscar ainda mais o seu programa em disco. As tuas técnicas básicas de interrogatório só verão o pequeno descompressor. No entanto, um hacker determinado vai reconhecer rapidamente o programa compressor e descomprimi-lo. Em qualquer dos casos, uma vez que um programa está em execução na memória, pode-se fazer um dump do núcleo do processo, ou anexar um depurador a ele. Não há muito que você possa fazer para evitar isso na maioria dos hardware.
Acho que devias usar software que usa chaves públicas e privadas. Aqui está mais informação sobre como funciona.
Se só quiser que utilizadores específicos executem o exe, então poderá definir políticas sob o windows que lhe permitirão executá-lo apenas para utilizadores específicos.
Mas se quiser esconder o código, então ... : desde que você não mencionou que língua você usou para fazer o exe. Se seu c / c++ já está criptografado o suficiente, ele requer algum trabalho para obter o código a partir dele. Se é java ou csharp existem ofuscadores que você pode usar. seria um pouco difícil obter o código do exe.Para encriptação, utilizar este código
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
Para descodificação
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