Accueil > > > MODIFIER UN EXE ( INTÉGRER DES VARIABLES , MOT DE PASSE )
MODIFIER UN EXE ( INTÉGRER DES VARIABLES , MOT DE PASSE )
Information sur la source
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
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
TECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYSTECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYS par ROMELARD Fabrice
Speakers : Lionel Limozin et Alain Marty La session commence par une découverte de SharePoint à travers la mise en place d'un environnement SharePoint pour la gestion des Sessions animées par BeWise. Le besoin est très ba...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0 par odewit
Je viens de publier la version 3.0 de Perspective pour Silverlight, qui regroupe un portage sous Silverlight 5.0 des fonctionnalités de Perspective 2.0, le framework 3D de haut-niveau introduit récemment et de nouveaux exemples de code. En voici la li...
Cliquez pour lire la suite de l'article par odewit TECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVERTECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVER par ROMELARD Fabrice
Speaker : Nadia Ben El Kadi Configuration machine La session commence par la toute première question à se poser lors de la mise en place d'environnement SQL Server, la configuration des machines : Type de mac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SITECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SI par ROMELARD Fabrice
Speakers : Fabrice Barbin, Samuel Blanchard, Julien Lo Presti Titre Prometteur et attractif invitant à voir comment lier le composant ludique Kinect dans le cadre d'une structure IT classique, notamment au travers de la plat...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOURTECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOUR par ROMELARD Fabrice
KeyNotes du premier jour pour les développeurs. La session est principalement axée sur une des principales directions prise par Microsoft à travers tous ses nouveaux produits : Cloud privé ou public (Solution Azure) ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|