begin process at 2010 03 21 06:53:04
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > TRUC UTILE POUR PROTEGER SES DROITS D'AUTEUR EN DELPHI

TRUC UTILE POUR PROTEGER SES DROITS D'AUTEUR EN DELPHI


 Information sur la source

Note :
Aucune note
Catégorie :Trucs & Astuces Classé sous :droits, auteur, copyright, database, voip Niveau :Débutant Date de création :16/09/2008 Vu / téléchargé :3 793 / 322

Auteur : greatmonarch

Ecrire un message privé
Site perso
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 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

  • (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;
(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

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

FONCTION DE CONVERSION DE MILLISECONDES EN HH:MM:SS:MMM par vyseR
Source avec Zip Source avec une capture UTILISER UNE DLL INCLUSE EN RESSOURCES par Bacterius
Source avec Zip Source avec une capture IMAGE DANS UN TDBGRID par HAFTARIFOUAD
Source avec Zip Source avec une capture [ASTUCE] COMMENT VOIR UN ITEM, D'UNE LISTBOX, TRONQUÉ DANS U... par cirec
Source avec Zip Source avec une capture MESSAGEDLG PERSONNALISÉ par HAFTARIFOUAD

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture LIER DEUX TDBGRID par cantador
Source avec Zip Source avec une capture UAC (USER ACCOUNT CONTROL) - EXÉCUTER UNE APPLICATION EN TAN... par ni69
Source avec Zip Source avec une capture COMPOSANTS ADO DE CONNEXION AVEC PRIVILEGES D'ACCÉES AVEC L'... par pascal1541
Source avec Zip COMMENT EXECUTER VOTRE PROG. DE GESTION SANS DELPHI... par aymenk
Source avec Zip UNE APLICATION DE GESTION DES STOCK par hichvbasic

Commentaires et avis

Commentaire de dancelajava le 22/09/2008 17:44:11

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.

Commentaire de greatmonarch le 22/09/2008 18:19:14

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.

Commentaire de Killer42 le 22/09/2008 21:42:38

Je suis pas sûr qu'il est autorisé de récupérer les IP des gens.

Commentaire de x1rt4m le 07/01/2009 12:18:10

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 :

<b>Bullsh*t</b>
Même mon premier crack été plus dure que ça.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Programme console et composant database [ par VTCFMAN ] Peut-on utiliser les composants Database dans un programme console avec ou sans module de données ?. Si non existe-t-il des des librairies permettant DataBase et Delphi 6 Personnel [ par biose ] Bonjour, voilà, je suis pas programmeur professionel donc je me sert de Delphi 6 Perso et j'aimerai integrer une petite base de donnée dans mon progra TDatabase, connexion a base access dynamique [ par usmok ] je voudrais pouvroir associer mon TDatabase à un bdd Access à l'exécution,le tout sans utiliser de lien ODBCles valeurs de mon database sont initialis Trés URGENT! Borland Database Engine [ par usmok ] Bonjour tout le monde,voilà, j'aimerais savoir ou je pourrais télécharger un install de l'administrateur BDE Borland.mon stage finit demain soir,et c' Avec quelle DataBase ? [ par Fredelphi ] Bonjour,Je dois faire un catalogue sur cd-rom, et j'aurais voulu mettre mes données dans une database.Est-ce possible ? Et si oui, avec quelle base ? Pb database delphi 5 Pro [ par grnouille ] Voila j'ai fait un logiciel de base de donnée sous delphi 5 professionnel et lorsque je l'execute sur un pc ou il n'y a pas delphi d'installer ,il me MEGA URGENTISSIME!!!!! : DATABASE ENGINE [ par shloukmou ] salu a tousvoila jai un probleme :jai une appli ki utilise une base de données access2000 (avec une liaison odbc) ki est sur un reseau local.kan je la pointeur de méthode dans une dll ... [ par silmortes ] Slt !!!!J'ai un soucis j'ai un objet TIBDatabase que je créé dynamiquement dans ma dll : Database := TIBDatabase.Create(NIL); Da Droits sur repertoire [ par erijeux ] Bonjour,J'aimerais pouvoir recuperer les informations concernant les droits d'acces a un repertoire.(Tel user a tel doits , etc...)Comment faire ? La Filtrer un database [ par smartyan ] smartyanQuelqu'un peut-il m'expliquer pourquoi je n'arrive pas à filtrer ma table acces?J'utilise le code suivant:Table1.filter:='Nom=S*';Table1.filte


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales