Protéger son appi

Résolu
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012 - 17 janv. 2007 à 12:42
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012 - 5 févr. 2007 à 16:37
Bonjour,



Je vous expose un problème connu et un peu récurrent : La protection d'une application.



Il existe des sources, des messages sur le Forum, un peu tout se dit et je n'ai pas toujours la
compétence de différencier la "bonne pratique". La mauvaise pratique ressemble souvent à la bonne
pratique...mais c'est une mauvaise pratique.



Il s'agit plutôt de faire une sorte de compilation des connaissances de tout le monde.



Je vais essyer de structurer mon propos...attention, le message risque d'être un peu long.





//** Pour résumer ce qui va suivre : **/


Comment réaliser la persistance d'informations pour tous les utilisateurs d'une machine et décourager les
simples cracker (pas les gateaux apéro...) de bidouiller trop facilement notre protection ?
//**



Il ne s'agit pas de monter une protection béton qui couterait les millions d'euros.



Qu'il s'agisse d'une application démo, d'une version avec fichier de licence (exemple http://www.vbfrance.com/code.aspx?ID=3227
),
le problème récurrent est où et comment stocker les informations ? Si une application est bloquée, limitée,complète elle doit l'être pour tous
les utilisateurs de la machine.



Les réponses souvent données :
- Base de registre
  -> Apparemment, des logiciels permettent de surveiller l'activité de la BDR. Les problèmes de droits sont rarement
     évoqués, car un utilisateur "lambda" n'a le droit d'écrire dans la BDR que dans HKCU. Du coup pas de partage des
     données entre tous les utilisateurs...-> KO
    
- Répertoire application, répertoire windows : Problème de droits en écriture pour les profils utilisateurs standard.
 ->KO
 
- Reste le répertoire "Documents and Settings/All Users/Application Data" (Il s'appelle différemment pour les autres OS bien sûr ;o))
  -> On stocke les données dans un fichier super bien crypté.
 
On enregistre dans ce fichier (allez, nommons le myfile.key) une clé d'activation, le nombre d'utilisation...



Bon, on a aussi envi qu'une simple réinstallation ne permette pas de relancer un programme bloqué ou
que l'activation est conservée.





Problèmes :


    - myfile.key est donc installé par l'installeur mais pas désintallé ni réinstallé s'il existe déjà.
        -> Si le fichier est supprimé manuellement avant ré-installation, ça passe.
        -> Certains logiciel supervise l'installation afin de supprimer tous les fichiers installés. Là encore, ça passe.
    - le fichier myfile.key est sauvegardé après installation et recopié une fois le logiciel bloqué...les infos de blocage sont perdues...





Questions :

    Q1- Comment conserver les données (dans un simple fichier, plusieurs, autres ?) ?
    Q2- Si on choisit de limiter une application, comment se rendre compte que l'utilisateur ne change pas à chauqe fois la date avant de lancer l'application ?
    Q3- Si on choisit un code d'activation par exemple, un test est fait dans le programme du genre If codeActivationCorrect Then...
        Apparemment, je n'y connais rien, mais en debuggant le programme, on peut passer le test et du coup, bah, le programme croit quel'activation est OK.
        Comment tester ... sans IF ? Bon, on peut déjà empêcher le debug visiblement
http://www.vbfrance.com/codes/PROTECTION-ANTI-DEBUG_39635.aspx
...
   
Merci à ceux qui ont eu le courage de lire jusqu'ici :oP...et ceux qui proposent une réponse



++
Moustachu
 




 




 




 




 





++ Moustachu

27 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
22 janv. 2007 à 12:00
Bin.... vérifier tout le temps que c'est OK.

Avec plein de If CestBonCaRouleContinue Then partout dans le logiciel, avec une bonne variété de condition d'acceptation pour qu'ils se ressemblent pas trops, ça doit être bien chiant à tous les trouver pour les faire sauter.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 janv. 2007 à 18:49
tu pourrais simplement faire un jmp avec une adresse calculée ....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
jorion7 Messages postés 13 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 27 novembre 2007
4 févr. 2007 à 15:13
Bonjour à tous,

Je réalise quelques logiciels et je protège mes 'oeuvres' d'une facon très simple:

Dans un premier temps, je réalise le programme complet
Ensuite, je met en commentaire les lignes , sous programmes ou fontionsqui ne doivent pas être accessibles aux utilisateurs non enregistrés.

De cette manière mes versions demos sont incassables
0
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
5 févr. 2007 à 12:26
Bonjour,

Merci de vos réponses. J'ai pris du retard....
Renfield>Ah oui...un jmp bien sûr, biens sûr....oui oui oui... heu... comment fait-on ?

jorion7> oui, c'est vrai qu'on peut limiter les fonctions proposées, c'est assez simple...

++ Moustachu
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
5 févr. 2007 à 13:26
Salut Moustachu,

Pour le Jmp, le programme (sauf erreur) de ma part est édité en hexa, la personne qui si connait bien à vite fait le tour de trouver les conditions qui, soit te permette de valider un code d'activation de ta source, un fois trouver le "cracker" remplace celle-ci(demande de code) par un JMP, ainsi une fois recomplier, quand tu lances l'appli, plus aucun code(exemple) n'est demandé..
Mais je pense que Renfield, s'aura mieux t'expliquer que moi même...

A+
Exploreur 
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
5 févr. 2007 à 13:36
Tout à fait Explorer, JMP est une instruction assembleur Intel x86 qui signifie "Saut inconditionnel" une sorte de Goto en VB

Pour schématiser, tu trouvera à coup sur dans ton programme une fois décompilé en asm un schéma du style :

- Test du code activation
- Si test pas bon -> Saut à #Erreur Code#        souvent fait par un JNE d'ailleurs, autre instruction asm 'Saut si non egal'
- Saut à #Suite Prog#
- #Erreur code#
- ..........
- #Suite Prog#

Ce schéma sera cracké généralement en :
- Test du code activation
- Saut à #Suite Prog#        C'est que le JMP vient remplacé le JNE (ou autre saut conditionnel)

- Saut à #Suite Prog#

- #Erreur code#
- ..........

- #Suite Prog#

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
5 févr. 2007 à 16:37
Merci bien d'avoir éclairer ma lanterne...je me doutais bien que JMP ça avait rapport à jump ;o)

++ Moustachu
0
Rejoignez-nous