Et allez hop ! *.ini, *.dat, *.bin, etc... tous dans le *.exe

Soyez le premier à donner votre avis sur cette source.

Vue 6 638 fois - Téléchargée 1 406 fois

Description

Cette démo explique comment une application peut stocker, lire, supprimer n'importe quelles données dans son propre fichier .exe.

A titre d'exemple, nous allons rendre notre application capable de se comporter de la même façon que si elle disposait d'un fichier .ini alors qu'elle ne se composera que d'un simple et seul fichier .exe (c'est plus clean et pratique, non ?).
Afin de faciliter la compréhension de cette méthode, la démo est minimaliste et ne fera que conserver la taille et la position d'une Form à sa fermeture afin de les restituer lors d'un prochain lancement. Et elle fera de même avec le contenu d'un mémo afin de démontrer l'utilisation de données de taille variable.

Il y a beaucoup de possibilités à explorer en adaptant la méthode présentée ici, car sur ce principe on pourra sauvegarder et lire toute sorte de données dans un fichier .exe en runtime ( et même plus ;).

Pour comprendre cette technique, il ne faut que quelques notions de base sur les fichiers binaires et l'objet TStream (il y a plusieurs exemples sur ce site).
Le principe de base est très simple. Il suffit d'ajouter nos données à la suite du fichier exe, sur le DD ( 'fallait y penser ! :p ).
La technique est un peu plus compliquée. Une application ne peut pas modifier son propre fichier .exe car celui-ci est en cours d'utilisation. On est donc obligé d'avoir recours à une petite gymnastique informatique.

Une dernière remarque :
Votre .exe, sur le disque dur, sera bien sûr plus lourd. Cependant l'occupation de la mémoire lors du lancement restera identique à celle d'un .exe classique. Cette technique ne consomme donc pas plus de ressources qu'un .exe classique.

Fait en D7
Testé sous XP

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
13
ATTENTION !

Méfiez-vous de ExeMod (le lien fourni par kachwahed).
Ce programme contiend une porte dérobée (fournit un accès à distance à l'ordinateur sur lequel il est installé) dans ExeMod\DEMOS\extractor\EXTRACTOR.EXE

Backdoor: Win32/Trenk!rts

http://www.sunbeltsecurity.com/threatdisplay.aspx?name=Backdoor.Win32.Trenk!rts&tid=4337928&cs=D9F584FE71FEF87F3B162583E31C2815
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
13
Bonjour kachwahed,

Je ne connaissais pas mais il semble en effet que ça exploite beaucoup des possibilités offertes par cette technique.

Merci pour ce lien très intéressant. :)
Messages postés
19
Date d'inscription
samedi 6 décembre 2008
Statut
Membre
Dernière intervention
5 décembre 2009

Bonjour Caribensila,
Très intéressant, c'est prèsque comme EXEMod ici:
http://www.torry.net/pages.php?id=268
Mai avec le support des paramètres (Params), sa n'a pas marcher avec Delphi 2010 :(
Messages postés
49
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
24 mars 2017

Salut Caribensila,
Ton EXE marche impec !!! Il fait 401ko. Chez moi la compil fait seulement 323ko(D5 ???)La seule différence est la propriété "form1.DesignSize" qui est inexistante en D5. Peut-être est-ce cela qui l'empêche de fonctionner !?

Par contre, en testant ton exe, je suis arrivé à mettre plus de 300k de données (copier/coller de texte dans le mémo). Ce qui m'a permis de me rendre compte que le problème de Cluster de mon post plus haut n'en est pas un. Effectivement, ce n'est pas un exe qui se sauve (donc taille imposée) mais le STREAM qui écris le fichier, donc réserve bien la place (données finales comprises). Tu peux donc écrire ainsi autant de données que tu veux.

Cordialement,
JiHelB
Messages postés
257
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
4 août 2020
9
Salut cirec,
effectivement sous D5 inutile ...
par contre je viens de faire le test sous 2010 pour être sûr, le code de caribensila ne marche pas.
Avec les modifications c'est OK.
Le commentaire ne sera peut-être pas inutile.
@+yanb
Afficher les 28 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.