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
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : PAINTBOXRE : PAINTBOX par fodhel
Cliquez pour lire la suite par fodhel
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|