Mémoriser des données dans l'exe

Soyez le premier à donner votre avis sur cette source.

Vue 6 202 fois - Téléchargée 1 078 fois

Description

Démo d'écriture simple de Données dans l'EXE lui-même.
Ces données sont dans la zone des Variables initialisées, où on peut réserver presque autant de place que l'on veut.

Etablie à partir des remarques suivantes :
- on peut renommer l'EXE courant (et celui-ci s'en fiche)
- on ne peut pas écrire dans le fichier courant QUELQUE soit son nom (Windows XP utilise un "pointeur" sur le disque et non pas le nom, pour bloquer l'accès)
- on peut faire une copie de l'EXE courant (donc modifiable en écriture)

Donc :
1 - on renomme EXE en BAK (on ne peut toujours pas écrire dans ce BAK)
2 - on fait une copie de BAK en EXE (on peut écrire dans cet EXE !!!!)
3 - on peut écrire tout ce qu'on veut dans cet EXE
4 - A la fermeture si les données n'ont pas été modifiées, fermeture normale.
Sinon on écrit les données dans l'EXE, puis ...
Méthode 1 : on lance une commande CMD... pour détruire le BAK et on se ferme (d'après Caribensila et Cirec)
ou Méthode 2 : on lance le nouvel EXE (qui détectera le BAK, le détruira et se fermera) et on se ferme.
Chacune des 2 méthodes a des avantages et des inconvénients :
Méthode 1 : avantages - simple, un seul EXE en mémoire (le CMD est tout petit)
: inconvénients - peut poser des problèmes de tempo pour certains EXE gourmands
(voir "http://www.delphifr.com/codes/CRIME-PARFAIT_51723 .aspx")
Méthode 2 : avantages - tempo plus facile à résoudre
: inconvénients - 2 EXE en mémoire en même temps

Chacune des 2 méthodes a le même inconvénient de prendre comme place, pendant un certain temps, 2 fois la taille de l'EXE sur le DD (Clef USB ?).

Ecrit en Delphi 5 Pro.
Testé sous Windows XP.

A TESTER HORS DE L'EDI (bien entendu puisque celui-ci réinitialise la zone en créant un nouvel EXE)

JiHelB le 5 Mai 2010

(révisé le 30 Avril 2010 pour Delphi 6.... suite à la remarque de YvesSimon)
(révisé le 4 Mai 2010 pour ne plus avoir de BAK...
Merci à Caribensila "http://www.delphifr.com/codes/CRIME-PARFAIT_51723 .aspx"
Merci à Cirec "http://www.delphifr.com/codes/EXECUTER-TOUTES-COM MANDES-DOS-AUTRES-FACILEMENT-SANS-PROBLEMES_34484. aspx"
(révisé le 5 Mai 2010 2nde méthode pour ne plus avoir de BAK...)

PS: le zip contient 2 dossiers (un par méthode)
Chaque dossier contient un "DansExe*.ex" à renommer en "DansExe*.EXE" pour pouvoir tester sans rien compiler.

Conclusion :


Merci à Caribensila dont le post précédent à éveillé celui-ci.
Merci à Cirec pour ses aides directes et indirectes.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
261
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
3 novembre 2020
12
Salut JIHELB,
désolé j'ai inversé ta source avec celle de caribensila,
d'où l'incompréhension de mes commentaires ( le boulet ).
Mais si le temps me le permet je posterai une demo qui
ressemble donc plus à celle de caribensila.
Mais les commentaires de cari resume bien la situation entre
les 2 méthodes, progressé sur les deux voies peut donner des
résultats intéressants et complémentaires.
@+ yanb.
Messages postés
49
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
24 mars 2017

Voilà, une version à jour fonctionnelle qui ne laisse pas de trace sur le DD. Merci Caribensila et Cirec.
Messages postés
49
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
24 mars 2017

A Yanb...mets nous en ligne une démo. Peut-être celà rendra t-il service à quelqu'un.
A Adelpro...Merci.
A Caribensila. Merci pour tes commentaires. Je suis en accord à 100% avec ta dernière phrase.
Mais dans les inconvénients :
- taille fixe (d'accord !!!)(mais on doit pouvoir enregistrer des données de tailles variables, à condition de réserver un espace suffisant de taille max de toutes les données. Je vais y réfléchir)
- taille pas trop importante (on peut réserver autant de place que nécessaire dans la limite de ce qu'accepte l'EDI (???) et de son propre courage (initialisation))
- backup sur le disque (hé oui ... :( aucun des procédés que j'ai testé n'a résolu ceci (à moins que tu puisse faire fonctionner le tien chez moi ou que YANB nous poste une solution viable)
Effectivement "...les inconvénients...des avantages".
En ce qui concerne la taille des données en général, je te mets un message sur ton poste.
Cordialement.
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
16
Bonne idée !
Je suis content que mon dernier post ait suscité ce genre d'initiative. C'était le but.
Bravo JiHelB, et vive l'émulation ! :)

Pour répondre à JEAN_JEAN :
En effet, la méthode de JiHelB est très différente de la mienne. Alors que j'écris des données à la suite du flux de l'exe, JiHelB les écrit directement DANS le flux de l'exe.
Les avantages :
- c'est plus simple
- une meilleure sécurité
Les inconvénients :
- des données de taille fixe
- taille des données pas trop importante (car elles sont toutes chargées en mémoire lors du lancement)
- la plupart du temps, présence sur le disque dur d'un backup de la taille de l'exe (on retombe dans le défaut de l'.ini)

On peut voir que les inconvénients découlent directemennt des avantages. Mais je crois que nous allons pouvoir encore progresser sur cette voie... ;)
Messages postés
47
Date d'inscription
mercredi 15 janvier 2003
Statut
Membre
Dernière intervention
7 février 2009

très bon travaille félicitation et merci pour ple partage de ce précieuse code source
adelpro
Afficher les 18 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.