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.
4 mai 2010 à 12:26
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.
4 mai 2010 à 11:41
4 mai 2010 à 09:02
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.
3 mai 2010 à 16:06
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... ;)
3 mai 2010 à 12:25
adelpro
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.