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.
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.