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
SQL SERVER : QUERY NOTIFICATION OU COMMENT êTRE NOTIFIé DE MODIFICATIONS DE DONNéES CôTé APPLICATIONSQL SERVER : QUERY NOTIFICATION OU COMMENT êTRE NOTIFIé DE MODIFICATIONS DE DONNéES CôTé APPLICATION par christian
Cette fonctionnalité à vue le jour dans Ado.Net 2.0 et s'appuie sur SQL Server 2005 (et plus) même si elle fonctionne avec SQL Server 2000. Le principe de fonctionnement côté applicatif est assez simple, on fournit une requête et lorsque le résultat d...
Cliquez pour lire la suite de l'article par christian [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg [MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|