QUAL MELHOR OPCAO

CARINHENA 19/10/2009 21:05:14
#325730
Há algum tempo, migrei 99% de um software de gerenciamento, de VB6 para .Net, para [Ô]evoluir[Ô].
Antes, quando o usuário baixava, preenchia um email e enviava pra mim.
Eu recebia, gerava uma chave e enviava pra ele, pelo email.

Isso em cada mês, ja que o software era mensal, não vendido.

Só que agora, queria mudar isso.
Tava querendo ter um banco de dados Mysql, na qual o software conecta-se, via pelo serial + dados da maquina liberasse o uso. Isso a cada 10 dias.

Até ai, não vejo muito problema.

Só que o problema é que, infelizmente, sabemos que o vb .net (ou .net como um todo), tem um problema sério, que é a de compilação, completa.
Isso quer dizer que a pessoa pode entender o código como foi escrito e burlar essas brechas.

A minha dúvida é. Existe alguma forma de criar esse tipo de limitação que falei, que de alguma forma, o cara mal intencionado não consiga decompilar e então me causar problemas?

To com essa dúvida e gostaria de conversar com o pessoal daqui, pra saber se me dão alguma luz.
JWCELYO 19/10/2009 21:38:15
#325731
Resposta escolhida
Olá CARINHENA Sim é possível na empresa onde trabalho actualmente só responsável por implementar esses tipos de tecnologias em aplicativos desenvolvidos pela empresa onde trabalhao.

mas especificamente no seu caso
pode de se usar dados já criptografados assim evitarias com que um possível crack entendesses esses dados após uma engenharia reversa

VAMOS AO EXEMPLO

so para lembra as conexão de SGDBS são criptografadas por padrão onde mesmo com sniff não se conseguiria entende os tais dados como senha e login da base de dados do SGDB da conexão no seu caso o MySQL.

outra dica que eu do seria bem interessante você cria conte de login a base de dados do seu MYSQL com permissão apenas Select.

[txt-color=#0404B4]Mas de qualquer forma pode fica tranquilo que seu sistema não sera crackiado caso ele num tenha uma grande popularidade na internet[/txt-color]








JWCELYO 19/10/2009 21:51:02
#325732
AQUI EU DEIXO UMA CLASSE DE CRIPTOGRAFIAS PARA VOCÊ UTILIZAR.

Public Class Criptografia
Public Function Criptografia(ByVal StrDataIn As String, ByVal ED As Boolean) As String

[ô]>>> if nedd xor, use this code
Dim XORCode As Integer
XORCode = 165

Dim IndR As Integer
Dim IndC As Integer

IndR = Val(3)
IndC = Val(4)
[ô]>>> create the array
Dim DataArray(IndR, IndC) As String
Dim i, j As Integer
Dim r, c As Integer
Dim StrOut As String
StrOut = [Ô][Ô]
i = 1
[ô]>>> loop to total length
While i <= StrDataIn.Length

[ô]>>> clear the array
For r = 0 To IndR
For c = 0 To IndC
DataArray(r, c) = Chr(1)
Next
Next

[ô]>>> check the loop last postion
Dim LastPos As Integer
If i + (IndR * IndC) - 1 <= StrDataIn.Length Then
LastPos = i + (IndR * IndC) - 1
Else
LastPos = StrDataIn.Length
End If

[ô]>>> store strdatain into array character by character
[ô]>>> initial the array indexer
r = 0
c = 0
For j = i To LastPos

[ô]>>> check if need to XOR the character
[ô] If ChkXOR.Checked = True Then
Dim TempChar As String
TempChar = Mid(StrDataIn, j, 1)
DataArray(r, c) = Chr(Asc(TempChar) Xor XORCode)
[ô] Else
[ô] DataArray(r, c) = Mid(StrDataIn, j, 1)
[ô] End If

c = c + 1


[ô]>>> reset the array indexer
If r > IndR - 1 Then
r = 0
c = 0
End If
If c > IndC - 1 Then
c = 0
r = r + 1
End If
Next

[ô]>>> add array value to string coulumn nad row wise
If ED = True Then
For c = 0 To IndC - 1
For r = 0 To IndR - 1
StrOut = StrOut & DataArray(r, c)
Next
Next
Else
[ô]>>> decrypt logics
Dim StrTemp As String
StrTemp = [Ô][Ô]
Dim p, p1 As Integer
p = 1
p1 = 1
For r = 0 To IndR - 1
For c = 0 To IndC - 1
StrTemp = StrTemp & DataArray(r, c)
Next
Next

While p <= StrTemp.Length
[ô]>>> replace array filling character
[ô]>>> check if it is xor
[ô] If ChkXOR.Checked = True Then
StrOut = StrOut & Replace(Mid(StrTemp, p1, 1), Chr(Asc(Chr(1)) Xor XORCode), [Ô][Ô])
[ô] Else
[ô] StrOut = StrOut & Replace(Mid(StrTemp, p1, 1), Chr(1), [Ô][Ô])
[ô] End If


p = p + 1

[ô]>>> increment position by row
p1 = p1 + IndR
If p1 > StrTemp.Length Then
p1 = p1 - StrTemp.Length + 1
End If
End While
End If
i = i + IndR * IndC
End While

Criptografia = StrOut


End Function
End Class

CARINHENA 19/10/2009 23:00:05
#325737
Jucelio, ótima classe!
Aliás, essa classe é quela polimórfica que criptografa e consegue identificar se a string esta criptografado e descriptografa?


Mas, ai entra a questão da decompilação.

Por mais que essa classe seja legal, imagine o individuo com o código escrito na mão (por causa da decompilação)?

Ele consegue saber por exemplo, que pego o número de série do HD e criptgrafo junto com a data de hoje, por exemplo.

Não sei, se estou conseguindo explicar direito...
JWCELYO 19/10/2009 23:13:52
#325738
isso mesmo CARINHENA ela false descriptografa é true criptógrafa

mais pode fica tranquilo que ninguém vai crackia seu sistema
mesmo que ele consigui realizar uma engenharia reversa não obter ar muito coisa legível
CARINHENA 19/10/2009 23:17:11
#325739
Entendo.

A minha maior preocupação mesmo, éa decompilação do código (que dizem ser fácil no .net).
Se esse problema não for tanto, então tranqüilo.
JWCELYO 19/10/2009 23:31:03
#325740
se você tive mais alguma duvida pode pergunta viu CARINHENA.
CARINHENA 20/10/2009 19:24:57
#325860
Beleza.

Na verdade, tenho outra, mas, acho melhor criar outro tópico, pra não disvituar o atual. =)
Tópico encerrado , respostas não são mais permitidas