Truc utile pour proteger ses droits d'auteur en delphi

Soyez le premier à donner votre avis sur cette source.

Vue 8 812 fois - Téléchargée 1 217 fois

Description

Truc utile pour proteger ses droits d'auteur
J'ai recupere les codes de certains d'entre vous pour mes tests de connexion et divers
Dans la mesure ou ils n'auraient pas copie ces codes ailleurs,
et que leur travail est le fruit de leur sueur,
je suis tout dispose a offrir des avantages en nature,
un petit sejour en Tunisie par exemple.
Evidemment, il faudra que le futur programme -Gestion de phone-shops- tourne nickel,
et que mes commissions sur les communications rentrent !
Il y a un encore un boulot dingue, le programme (qui utilisera WinPCap) devra se connecter a un serveur sip,
et remplir On Line une base de donnees chez un provider php
pour garder une trace de toutes les communications et des sommes a se faire payer

Le programme ci-apres appelle une page asp dynamique qui verifie une liste
d'utilisateurs en ordre de licence
la page repond simplement dans un navigateur "no" sans les guillemets
si l'utilisateur ne dispose pas du login et password requis
sinon la page repond "ok345", 345 etant un numero de licence
Bon, ce n'est peut-etre pas genial, mais cela decourage le piratage je trouve

Source / Exemple :


(extrait)
procedure ConnexionMain;
var
   lien : String;
begin
//Le veritable lien a ete masque ici
//La page dynamique peut etre en asp ou php, avec une liaison a une DB

lien := 'http://urldunsite/repertoirediscret/logon.asp?user=' + login + '&pass=' + password ;
  Logon.WebBrowser2.Navigate(lien);
end;

procedure TLogon.WebBrowser2DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  REPONSE, OK_NO : String;
  longueur, longmoins2, posok : Integer;
begin
   beep;
   // La page téléchargée est réduite en chaîne.
   REPONSE := WebBrowser2.OleObject.Document.Body.InnerHTML;
   // Le numero de licence est extrait de cette chaîne.
   longueur := Length(REPONSE);
   longmoins2 := (longueur - 2);
   posok := pos('k',REPONSE);
   if (posok = 0) then
     begin
       Edit6.Text := 'Pas en ordre de licence !';
       Button1.Enabled := true;
     end;
   if (posok = 2) then
     begin
       //Utile pour les tests
       //str(posok,OK_NO);
       //OK_NO := Copy(REPONSE,3,longmoins2);
       //Edit6.Text := OK_NO;
       Button1.Enabled := true;
       WebBrowser2.Stop;
       Form2.Show  //A desactiver pendant les tests
     end;
end;

Conclusion :


Je dois recommencer tout a partir de zero, le programme precedent realise en VisualBasic.NET
etant trop difficile a installer (framework de Microsoft posant trop de problemes)

Veuillez noter que je ne connais Delphi 6 que depuis 5 jours...

Projet en cours (Tunisie): http://windandsolarpow.populus.org/

Jean-Marc bk379122@skynet.be

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
2
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
7 janvier 2009

salut tous,
1er: les string sont tous visible (pas de cryptage), alors si tu dit
"avec , je confirme que cela doit etre possible" moi je te dit c'est plus que possible malgré qu'un vrais cracker n'aura pas besoin d'un un lecteur hexadecimal in the most of time.

2em : tes API sont aussi tous bien organisé :D

3em : pas de package, loader ni changement de EP (Entry Point).

4em : pas de Anti-debugger, normalment un programmeur delphi ( IDE windows ) doit savoir quel ques bonnes API comme par exemple 'Isdebuggerpresent' bien sur il y a d'autre methodes plus éfficace comme le Heap flags on vérifions le "ForceFlags dans le heap header à l'offset 0x10 ont XP bien sure mais par fois juste le caption de WND suffiras pour faire gaspillé un du temps précieux de reverser.

5em :

.
.
.

anay way! le RE et un wide monde, alors si vous voulez (tous le programmeurs de Delphifr qui sont null dans "PCD" la protection civile des logiciels :)) essayez le (SMC) self-modifing, je parle pas de GP ni de AG ( vous allez vous perdre ) je parle juste d'isomorphisme et metamorphisme methodes, informez vous bien sur la deuxemme methode, par ce que si vous utiliser la premiere :d "your sensitive code is left naked in memory" so don't try it ;) it doesn't need a metter, par ce que un simple dump de memoir suffira et même si vous essayez le anti-dump il y a aussi le anti-antidump :p.

finally, je respecte les efforts et le temps que tu mis pour faire cette source mai j'aime bien que tu me pardonne comme même @greatmonarch de tu dire :

Bullsh*t
Même mon premier crack été plus dure que ça.
Messages postés
5
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
22 septembre 2008

Je suis pas sûr qu'il est autorisé de récupérer les IP des gens.
Messages postés
8
Date d'inscription
jeudi 18 août 2005
Statut
Membre
Dernière intervention
22 septembre 2008

Oui, avec un lecteur hexadecimal, je confirme que cela doit etre possible.

Merci de l'info. Il faudra en effet que je prenne toutes les precautions pour proteger mon futur programme.

Bon, la solution sera de fabriquer une ou plusieurs fonctions et de la (les) fourrer dans un charabia de code ultra-court, avec passage du contenu par plusieurs pointeurs, he, bien sur, de faire appel a du protocole https.

Quand je vois comment les concepteurs du composant PacketX ont protege leur progeniture, cela me donne des idees.

Je pense aussi fourrer dans le code quelque chose qui m'envoie de temps en temps l'IP de l'utilisateur, afin de detecter des usages multiples non autorises.

Enfin, une fonction de mise a jour en ligne pourrait permettre de varier le code et de proceder a des verifications complementaires.

Encore merci pour cette contribution.
Messages postés
2
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
22 septembre 2008

Donc, dans ton exécutable, il suffit de trouver la ligne:
posok := pos('k',REPONSE);
et de la patcher pour y mettre
posok := 2;
et ton logiciel est cracké!

POS étant une fonction standard du Pascal, son adresse est archi-connue.
Il suffit de rechercher son adresse d'appel et le caractère 'k' à proximité de l'appel, et hop, on a localisé la ligne à patcher.

Ca prends une minute ou deux à faire.
Y vont bien rire les hackers.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.