begin process at 2010 03 19 17:49:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tutoriaux

 > MODIFIER UN EXE ( INTÉGRER DES VARIABLES , MOT DE PASSE )

MODIFIER UN EXE ( INTÉGRER DES VARIABLES , MOT DE PASSE )


 Information sur la source

Note :
4,83 / 10 - par 6 personnes
4,83 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Tutoriaux Niveau :Initié Date de création :17/05/2003 Date de mise à jour :17/05/2003 19:27:29 Vu :18 380

Auteur : Remixgame

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

 Description

Bonjour ,

Ce code est une copie-coller
de mon tutorial
si vous voulez le voir en clair

http://www.remixtech.com/dataexe.php

Source

  • La modification de variable interne dans un programme déja compilé ...
  • Possible ? Impossible ? En delphi c'est Impossible ? He bien non , avec le procédé que nous énoncerons plus loin vous pourrez stocker , des chaines , des fichiers , et bien d'autre chose ....
  • I Pourquoi ?
  • Enregistrement de logiciel
  • Préférence , au lieu des fichiers INI
  • Informations de sécurités
  • Ajout de fichier voir de Plug-in et autre ...
  • Creer des logiciels d'installation du type InstallShield ... He oui c'est possible ;-) Bonne chance ...
  • II Introduction
  • Chaque systeme d'exploitation utilise une architecture différente pour ses executables , ici nous citerons uniquement PE(Win32) ce qui reste bien sur valable pour Linux(ELF)
  • Les infos de chargement sont les données qui permettent de charger les infos du disque et de tout charger en mémoire ....
  • III Ou met on alors les informations ?
  • On met simplement les données à la fin dans une partie nommée partie de personalisation ...
  • ----------------------------------------
  • Headers
  • ----------------------------------------
  • Section /Segment N°1
  • ---------------------------------------
  • Section/Segment N°2
  • ---------------------------------------
  • |
  • |
  • ----------------------------------------
  • Section/Segment N
  • ----------------------------------------
  • ----------------------------------------
  • !!! Partie personalisable !!!
  • ----------------------------------------
  • IV Que peut on ajouter dans cette partie ...
  • Tout , ce qui est binaire ou qui ressemble à du texte ;-) Enfin tout . Voici les variables et constante que nous déclarerons pour écrire dans un fichier dit exe ...
  • const
  • //Notre Signature de L'EXE, cette trace nous servira à savoir ou l'on doit chercher...
  • ExeBufSig = 'EB1.0';
  • type
  • //Le record nous aidera à insérer mais aussi retrouver notre trace ...
  • TExeBufFooter = record
  • OriginalSize : Integer;
  • Sig : Array[0..4] of char;
  • end;
  • VI Comment ajouter des données .
  • Vous devez traiter ce fichier , comme un fichier normal binaire , rien de plus dur , rien de plus simple , Attention le fichier ne doit pas être utilisé pour la modification ...
  • procedure SetExeData (ExeName : String; ExeBuf : TExeBuf);
  • var
  • F : File;
  • BufSz,OrigSz : Integer;
  • Footer : TExeBufFooter;
  • begin
  • AssignFile (F,ExeName);
  • Reset (F,1);
  • try
  • //On place dans la variable OrigSZ la taille du fichier d'origine
  • OrigSz := FileSize(F);
  • //On va grace à seek à la fin du fichier
  • Seek (F,OrigSz);
  • //On écris nos données juste après la fin du fichier ...
  • BufSz := Length(ExeBuf);
  • BlockWrite (F,Pointer(ExeBuf)^,BufSz);
  • //On écris ensuite notre Footer
  • FillChar (Footer,SizeOf(Footer),0);
  • Footer.OriginalSize := OrigSz;
  • Footer.Sig := ExeBufSig;
  • BlockWrite (F,Footer,Sizeof(Footer));
  • finally
  • CloseFile (F);
  • end;
  • end;
  • VII Comment Lire des donnés
  • Encore une fois pas trop compliqué , mais il fallait y penser ...
  • procedure GetExeData (ExeName : String; var ExeBuf : TExeBuf);
  • var
  • F : File;
  • CurrSz, BufSize : Integer;
  • OldFileMode : Integer;
  • Footer : TExeBufFooter;
  • begin
  • AssignFile (F,ExeName);
  • //On sauve l'ancien FileMode
  • OldFileMode := FileMode;
  • //On utilise LectureSeul
  • FileMode := 0;
  • try
  • Reset (F,1);
  • try
  • //On prend la taille courante du fichier
  • CurrSz := FileSize (F);
  • //On cherche la place de BIG footer LOL et on le lit
  • Seek (F,CurrSz-SizeOf (Footer));
  • BlockRead (F,Footer,Sizeof(Footer));
  • //SI il n'ya pas de Signature BEN c'est qu'il n'y apas de donnée ...
  • if Footer.Sig <> ExeBufSig then
  • raise EExeBuf.Create ('Pas de donné dans l''exe');
  • /On calcul le Tampon que l'on à écrit ci dessus
  • BufSize :=CurrSz-Footer.OriginalSize-SizeOf(Footer);
  • SetLength (ExeBuf,BufSize);
  • //On cherche et on LIT ! MDR
  • Seek (F,Footer.OriginalSize);
  • BlockRead(F,Pointer(ExeBuf)^, BufSize);
  • finally
  • CloseFile (F);
  • end;
  • finally
  • //On fait un retour vers le FileMode qu'on à sauver en haut ...
  • FileMode := OldFileMode;
  • end;
  • end;
  • VII Traiter ce que l'on a récupéré
  • Oui il faut traiter les données afin de pouvoir les utiliser , rien de compliqué , c'est MOVE qui nous mache le travaille , sinon faites très attention les données que vous inscrivez ne sont pas cryptés .. Elle sont visibles même avec Notepad .... Conclusion cryptéz les avec un Algo maison ...
  • procedure StringToExeBuf (const S : String; var ExeBuf : TExeBuf);
  • begin
  • SetLength(ExeBuf,Length(S));
  • Move (Pointer(S)^,Pointer(ExeBuf)^,Length(S));
  • end;
  • function ExeBufToString (const ExeBuf : TExeBuf) : String;
  • begin
  • SetLength (Result,Length(ExeBuf));
  • Move (Pointer(ExeBuf)^,Pointer(Result)^,Length(ExeBuf));
  • end;
  • VIII Bon on l'utilise ???
  • Oui , Oui deux secondes voici comment utiliser tout cela ...
  • Lire :
  • procedure TForm2.Button1Click(Sender: TObject);
  • var
  • ExeBuf : TExeBuf;
  • begin
  • GetExeData(ParamStr(0),ExeBuf); // On va chercher
  • memo1.Text:=(ExeBufToString(ExeBuf)); // On traite
  • end;
  • end.
  • Ecrire :
  • procedure TForm1.Button1Click(Sender: TObject);
  • const
  • FileName = 'LEFICHIER.exe';
  • var
  • ExeBuf : TExeBuf;
  • begin
  • StringToExeBuf(memo1.Text,ExeBuf); // On traite les données
  • SetExeData(FileName,ExeBuf); // On les range dans le fichiers ;-)
  • end;
La modification de variable interne dans un programme déja compilé ...
Possible ? Impossible ? En delphi c'est Impossible ? He bien non , avec le procédé que nous énoncerons plus loin vous pourrez stocker , des chaines , des fichiers , et bien d'autre chose ....

I Pourquoi ?
Enregistrement de logiciel
Préférence , au lieu des fichiers INI
Informations de sécurités
Ajout de fichier voir de Plug-in et autre ...
Creer des logiciels d'installation du type InstallShield ... He oui c'est possible ;-) Bonne chance ...

 
II Introduction 
Chaque systeme d'exploitation utilise une architecture différente pour ses executables , ici nous citerons uniquement PE(Win32) ce qui reste bien sur valable pour Linux(ELF) 

 

 

 

 

 

 

 

Les infos de chargement sont les données qui permettent de charger les infos du disque et de tout charger en mémoire ....

III Ou met on alors les informations ?
On met simplement les données à la fin dans une partie nommée partie de personalisation ...

----------------------------------------
Headers
----------------------------------------
Section /Segment N°1
---------------------------------------
Section/Segment N°2
---------------------------------------
|

|

----------------------------------------
Section/Segment N
----------------------------------------
----------------------------------------
!!! Partie personalisable !!!
----------------------------------------

 

 

 

 

 

 

 

 

IV Que peut on ajouter dans cette partie ...
Tout , ce qui est binaire ou qui ressemble à du texte ;-) Enfin tout . Voici les variables et constante que nous déclarerons pour écrire dans un fichier dit exe ...

const
//Notre Signature de L'EXE, cette trace nous servira à savoir ou l'on doit chercher... 
ExeBufSig = 'EB1.0';

type
//Le record nous aidera à insérer mais aussi retrouver notre trace ...
TExeBufFooter = record
OriginalSize : Integer;
Sig : Array[0..4] of char;
end;

 

 

 

 

 

VI Comment ajouter des données .
Vous devez traiter ce fichier , comme un fichier normal binaire , rien de plus dur , rien de plus simple , Attention le fichier ne doit pas être utilisé pour la modification ...

procedure SetExeData (ExeName : String; ExeBuf : TExeBuf);
var
F : File;
BufSz,OrigSz : Integer;
Footer : TExeBufFooter;
begin
AssignFile (F,ExeName);
Reset (F,1);
try
//On place dans la variable OrigSZ la taille du fichier d'origine 
OrigSz := FileSize(F);
//On va grace à seek à la fin du fichier
Seek (F,OrigSz);
//On écris nos données juste après la fin du fichier ...
BufSz := Length(ExeBuf);
BlockWrite (F,Pointer(ExeBuf)^,BufSz);
//On écris ensuite notre Footer
FillChar (Footer,SizeOf(Footer),0);
Footer.OriginalSize := OrigSz;
Footer.Sig := ExeBufSig;
BlockWrite (F,Footer,Sizeof(Footer));
finally
CloseFile (F);
end;
end;


VII Comment Lire des donnés
Encore une fois pas trop compliqué , mais il fallait y penser ...

procedure GetExeData (ExeName : String; var ExeBuf : TExeBuf);
var
F : File;
CurrSz, BufSize : Integer;
OldFileMode : Integer;
Footer : TExeBufFooter;
begin
AssignFile (F,ExeName);
//On sauve l'ancien FileMode
OldFileMode := FileMode;
//On utilise LectureSeul
FileMode := 0;
try
Reset (F,1);
try
//On prend la taille courante du fichier
CurrSz := FileSize (F);
//On cherche la place de BIG footer LOL et on le lit
Seek (F,CurrSz-SizeOf (Footer));
BlockRead (F,Footer,Sizeof(Footer));
//SI il n'ya pas de Signature BEN c'est qu'il n'y apas de donnée ... 
if Footer.Sig <> ExeBufSig then
raise EExeBuf.Create ('Pas de donné dans l''exe');
/On calcul le Tampon que l'on à écrit ci dessus
BufSize :=CurrSz-Footer.OriginalSize-SizeOf(Footer);
SetLength (ExeBuf,BufSize);
//On cherche et on LIT ! MDR
Seek (F,Footer.OriginalSize);
BlockRead(F,Pointer(ExeBuf)^, BufSize);
finally
CloseFile (F);
end;
finally
//On fait un retour vers le FileMode qu'on à sauver en haut ...
FileMode := OldFileMode;
end;
end;


VII Traiter ce que l'on a récupéré
Oui il faut traiter les données afin de pouvoir les utiliser , rien de compliqué , c'est MOVE qui nous mache le travaille , sinon faites très attention les données que vous inscrivez ne sont pas cryptés .. Elle sont visibles même avec Notepad .... Conclusion cryptéz les avec un Algo maison ...

procedure StringToExeBuf (const S : String; var ExeBuf : TExeBuf);
begin
SetLength(ExeBuf,Length(S));
Move (Pointer(S)^,Pointer(ExeBuf)^,Length(S));
end;

function ExeBufToString (const ExeBuf : TExeBuf) : String;
begin
SetLength (Result,Length(ExeBuf));
Move (Pointer(ExeBuf)^,Pointer(Result)^,Length(ExeBuf));
end;


VIII Bon on l'utilise ???
Oui , Oui deux secondes voici comment utiliser tout cela ...

Lire :

procedure TForm2.Button1Click(Sender: TObject);
var
ExeBuf : TExeBuf;
begin
GetExeData(ParamStr(0),ExeBuf); // On va chercher
memo1.Text:=(ExeBufToString(ExeBuf)); // On traite 
end;
end.

Ecrire :

procedure TForm1.Button1Click(Sender: TObject);
const
FileName = 'LEFICHIER.exe';
var
ExeBuf : TExeBuf;
begin
StringToExeBuf(memo1.Text,ExeBuf); // On traite les données 
SetExeData(FileName,ExeBuf); // On les range dans le fichiers ;-)
end;




 Sources du même auteur

LES THREADS EN DELPHI
Source avec Zip CONVERTISSEUR BIN -&GT; HEXA -&GT; DEC -&GT; ASCII
IDHTTP , IDPOP3 ,IDSMTP EN GRANDE PARTIE EXPLIQUÉE
Source avec Zip [IDPOP3] INDY POP3 , RECEVOIR LES HEADERS ET LE NOMBRE DE MA...
Source avec Zip SUPERPOSITION D'IMAGES , DÉSSINER UN BMP

 Sources de la même categorie

Source avec Zip Source avec une capture GESTION DE L'ACCÈS AU MDICHILD À L'AIDE D'ONGLET par CricriLeFou
MAILS AVEC INDY10 : CONTENTTYPE/CONTENTID/PARENTPART par MAURICIO
Source avec Zip Source avec une capture LES CODES DU TUTORIEL SUR LA PROTECTION DES LOGICIELS PAR FI... par Paounet
Source avec Zip Source avec une capture DESIGN PATTERN OBSERVER : IMPLÉMENTATION RÉUTILISABLE par Delphiprog
Source avec Zip Source avec une capture STEGANO - CACHER DU TEXTE DANS UNE IMAGE (TUTO) par pablor44

Commentaires et avis

Commentaire de Bestiol le 18/05/2003 00:36:28

C'est un bon code !!
Si quelqu'un veut un code concret qui reprend ce principe, je le renvoie sur un source que j'ai publié dernièrement...

ARCHIVAGE EN AUTOEXTRACTIBLE (SELF-EXTRACTOR) AVEC COMPRESSION:
http://www.delphifr.com/article.aspx?Val=2362

Bonne prog' !

Commentaire de logedu le 20/05/2003 14:31:44

on peut faire ça en visual basic ? (VB6)

Commentaire de Bestiol le 21/05/2003 19:59:08

Aucune idée !
Certainement, avec les API windows... Je ne sais pas quels sont les outils disponibles en VB... Il faut que tu ailles sur www.vbfrance.com !

Commentaire de Glorkonline le 01/08/2003 12:35:41

C'est une très bonne source mais je n'ai pas bien compris ou est-ce qu'on doit mettre les variables à modifier et qu'est-ce qu'on doit y mettre ?

Commentaire de Glorkonline le 02/08/2003 10:43:42

Ma remarque était idiote vu que j'avais pas compris ... Mais y a un autre problème : tu dis dans chaque procedure que Exebuf est un TExeBuf, or Delphi connaît pas TExeBuf. Il ne faut pas mettre quelque chose dans le uses ?

Commentaire de Remixgame le 04/08/2003 19:09:13

Vraiment chelou, enfin ne vous embetez plus télécharger EXEMOD ;-)
Sinon en vb c tout à fait possible ;-)
Tu peux modifier les variables avec notepad hihi ...
A moins que vb n'est pas d'outil de gestion de fichiers ...

Voila bye

Commentaire de Glorkonline le 12/08/2003 17:10:05

Ta réponse ne me dit pas ce que c'est que TExeBuf !

Commentaire de e1130 le 23/10/2003 15:31:18

Moi aussi j'ai un gros problèmes avec le TExeBuf et je n'ai pas toujours trouver la solution mais de ce qui est des variables affichier en clair avec note pad, il n'y a qu'a encoder les var av un bon algo solide comme en DES ou MD5 pour mots de passe ou autre

Commentaire de e1130 le 25/10/2003 22:18:33

Le gars ses contenter de copier le code su le site de borland

Writing custom data to executable files in Windows and Linux
http://bdn.borland.com/article/0,1410,27979,00.html

la reponse pour le TExeBuf est :

type
  //fixed-size buffer for the custom data
  TExeBuf = Array [0..555] of char;

Commentaire de MaXoR le 23/12/2003 19:04:47

je voudrai savoir si sais possible de faire un patch maker avec saitte source et comment l'utiliser svp merci

Commentaire de aliwassem le 01/03/2004 16:15:36

salut les amis

j'ai essayé créer une exe d'après cette source mais je peux pas, je trouve des erreurs dans la ligne suivante

BlockRead(F,Pointer(ExeBuf)^, BufSize);

est ce que vous pouvez m'aider

merci d'avance

Commentaire de MoveX le 26/09/2004 16:47:57

serait il possible de faire un zip,  en plus du code, parce que la je pige pas tout, je vois pas comment integrer ca...

Commentaire de MaXoR le 06/06/2005 18:14:40

vous pouvez utilise exemod pour delphi qui functionne tret bien aller voir sur google il est la

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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,406 sec (3)

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