Ecriture dans son propre Exe

jihelb Messages postés 49 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 mars 2017 - 6 août 2006 à 12:06
jinh68 Messages postés 215 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 1 septembre 2006 - 15 août 2006 à 14:37
Quelqu'un sait-il pourquoi une application ne peut pas écrire dans son propre fichier.exe ?
Protection par windows ? par le système de fichiers ?....
Y-a-t-il une solution ? windows a certainement prévu qqchose !
Merci.

JLB[:)]

16 réponses

Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
6 août 2006 à 13:19
Salut,

as-tu déjà essayé de supprimer un exe pendant son exécution ? et bien là c'est le même problème.

@+
 Matt

<hr size="2" width="100%" />La paresse est la mère du génie...
http://www.delphilab.com
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
6 août 2006 à 15:03
On peut avec un peu d'astuce. Voici la méthode:

- Fait une copie de ton exe
- Modifie cette copie
- Execute la copie
- Supprime la 1ere version

Ca revient un peu a faire une mise à jour. Comme l'a dit Matt 261, on ne peut pas toucher à un fichier en cours d'execution. Mais pourquoi cherche-tu à faire cela ? Ca ressemble etrangement au comportement d'un virus...
0
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
6 août 2006 à 15:04
>>>Ca ressemble etrangement au comportement d'un virus...

C'est exactement ce que j'ai pensé Cpt !

@+
 Matt

<hr size="2" width="100%" />La paresse est la mère du génie...
http://www.delphilab.com
0
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
7 août 2006 à 10:05
@ Cirec : on dirait bien que ton nombre de message est revenu

@+
 Matt

<hr size="2" width="100%" />La paresse est la mère du génie...
http://www.delphilab.com
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
7 août 2006 à 10:07
@ Matt : je les ais réécris cette nuit

@+
Cirec
0
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
7 août 2006 à 10:09
Quelle belle performance !

@+
 Matt

<hr size="2" width="100%" />La paresse est la mère du génie...
http://www.delphilab.com
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
7 août 2006 à 13:47
Salut,


@ Loda : la méthode que je propose (celle de Bestiole) n'écris pas réellement dans l'EXE mais ajoute des fichiers à un EXE.


Je ne sais pas si c'est assez claire mais en aucun cas je vais boulverser la structure de l'EXE


et comme l'EXE est directement créé  avec les Fichiers aucun anti-virus ne bronchera .


Je sais à quoi tu penses quand tu dis "si tu écrit dans un exe(en admettant que ce que écrive soit juste), la taille de ton exe ne doit pas changer (sinon, il risque de ne plus marcher)" et la effectivement il ne faut pas n'importe quoi sinon plus rien ne fonctionnera















@+
Cirec
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
7 août 2006 à 14:18
@ Cirec: dsl, pour être honnêt je ne me suis pas penché outre mesure sur ta source. Je me rappelais juste que je l'avais vu passée une fois. Faudra que je me penche dessus...

Pour une modif "normal" de l'exe, les firewall geulent (en tout cas le mien ;) ). Mais, j'ai pas la moindre idée de ces critères de surveillance. (taille, crc, ?)

et oui. c'est clair, qu'il ne faut pas commencer à ajouter des données au millieu de n'import où. Les adresse relative c'est très jolie, mais c'est pas fait pour ça... bref. laissons le réfléchire à tous ça...
0
Utilisateur anonyme
7 août 2006 à 14:39
Salut,

J'ai déja fais ce genre de chose : le probleme c'est que sa question n'est pas assez complete pour donner une réponse. Si vous voulez je peux faire une petite source mais elle sera pas terrible
0
Utilisateur anonyme
7 août 2006 à 14:46
Puis non : ca sent le virus ;)

@+
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
7 août 2006 à 15:15
@ Loda : petite précision La source n'est pas de moi mais de Bestiole
@+
Cirec
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
7 août 2006 à 15:36
@Cirec: J'avais cru comprendre quand t'as dit "la méthode que je propose (celle de Bestiole)". Je ne parlais de "ta" source que soucis de simplification.
(on me reproche souvent d'être trop précis, alors j'essai de faire des efforts ;) )

Mais, merci de la précision.
0
jinh68 Messages postés 215 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 1 septembre 2006
7 août 2006 à 15:42
C'est possible par des mécanismes de VirtualAlloc etc...mais il faut savoir où l'on met les pieds ( il me semble d'ailleurs que Vista interdira ce genre de manipulations).
Le plus simple serait effectivement de nous indiquer ce que tu veux faire plutôt que de partir sur cette solution.

j!nH
0
jinh68 Messages postés 215 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 1 septembre 2006
11 août 2006 à 14:24
Essaie avec WriteProcessMemory.

j!nH
0
jihelb Messages postés 49 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 mars 2017
14 août 2006 à 10:25
Merci j!nH,
mais WriteProcessMemory écrit seulement dans la mémoire allouée à un Process et non pas dans l'exe sur le disque.

JLB[:)]
0
jinh68 Messages postés 215 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 1 septembre 2006
15 août 2006 à 14:37
Ah oui excuse moi, je pensais que tu voulais patcher à la volée. Dans l'autre cas, tu peux utiliser ceci:


 



var F : file;




    TonTrucAEcrire:=$1234;
    {$I-}
    Assign(F,ParamStr(0));
    Reset(F,1);
    Seek(F,FileOffset); {A déterminer}   
    BlockWrite(F,TonTrucAEcrire,SizeOf(TonTrucAEcrire));
    Close(F);
    {$I+}






j!nH
0
Rejoignez-nous