quelques conseils pour garantir un minimum de protection :
- Ne pas mettre qu'un simple conditionnel qui mène vers la protection mais plusieurs, imbriqués et à de multiples endroits (chargement de tous formulaires, lors de clic sur des boutons menant aux fonctions principales, au chargement de l'application...). Ce code à l'air un peu ridicule mais il offre une protection supplémentaire, même si celle-ci est minime, à terme elle peut décourager le cracker.
If Not Activation Then
Application.Exit
Else
If Not Activation Then
Application.Exit
End If
End If
- Ne pas faire de blocage par formulaire du type :
If Not Activation Then
Frm_Activation.Show
End If
Mais préférer 'Application.Exit', sauf bien entendu au moment ou le programme doit laisser l'utilisateur s'enregistrer, comme au load par exemple, mais mettre un code 'Exit' à la suite.
- Eviter de mettre des chaines "BRUTES" dans des variables et plutôt utiliser les ressources, ou des tableaux de Bytes et l'Enconding.
- Ne JAMAIS mettre d'identifiants vers des boites mail, ni serveur FTP, ou autres comptes.
- Toujours crypter les fichiers contenant des données et essayer d'en cacher la clé dans le code, Ex:
'Si ceci est ma clé de cryptage, alors préférer...
Dim MyKey As Bytes() = {4, 7, 8, 55, 48, 88, 55, 44, 77, 88, 255, 12, 11, 14, 14, 58}
'...la scinder en deux parties, comme ça celui qui épie la mémoire recherchera une variable contenant 8 ou 16 bytes
'et ces variables passeront plus ou moins inaperçues. Bien qu'il faille tout de même reconstituer le tableau en un bloc lors 'des opération de cryptage/décryptage.
Dim MyKey1 As Bytes() = {4, 7, 8, 55}
Dim MyKey2 As Bytes() = {48, 88, 55, 44, 77}
Dim MyKey3 As Bytes() = {88, 255, 12, 11, 14, 14, 58}
ou sinon générer celle-ci à partir d'informations du PC ou de session (Nom de l'ordinateur, nom de l'utilisateur, N° de série du volume, adresse MAC des interfaces réseaux etc...).
- Si des informations sont envoyés par le biais du réseau, essayer d'utiliser le SSL si le protocole le supporte, sinon faire soit même un cryptage (le Framework offre la possibilité d'utiliser un cryptage RSA facilement) dans le cas de communication directe via socket par exemple.
- Penser à obfusquer le code de l'exécutable compiler en .Net, sinon le reste ne sert à rien, car la source de l'application est disponible à son utilisateur !
Voila, je crois que j'ai développé un minimum les arguments énoncés dans mon poste précédent.
Bon courage, @+
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.Voici