Ajout d'une variable dans un exe

tezca_system Messages postés 25 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 5 mars 2007 - 10 sept. 2006 à 15:17
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 11 sept. 2006 à 01:57
Sans avoir lu encore toutes mes docs (vos bouts de codes et les liens de vos sites), je me pose une question.
Est il possible d'integerer une variable dans un exe.
Par là j'entends un buffer.
Il y a quelque chose que je n'ai pas encore du saisir.
L'exe crée/initialise ses data dans la memoire et non pas dans l'exe --_--
Je vais essayer d'etre plus clair:

main:
l'exe tourne et d'un coup jump vers ma routine ajoutée à la main dans l'exe.

routine ajoutée a la main :
ouvre un fichier txt
lit ce qu'il y a dedans et l'enregistre dans un, buffer
exploiter ce qu'il y a dans ce buffer

Ma piste selon moi:
Ce buffer n'est qu'un pointeur a qui on allouera de la memoire avec Globalloc/globallock(supposition) mais ou creer ce pointeur?
Dans les .data?
je ne vois pas les .data avec ollydbg ni avec w32dasm mais je les vois avec IDA

C'est un point vraiment capital je trouve, tu peux rajouter tes propres variables dans un exe et hop t le roi du pétrole.(peux etre que vous pratiquer deja cela mais j'imagine les possibilités extraordinaires de manipulation et d'audit de ce genre de pratique) 

merci par avance je reste dans coin >.>

2 réponses

ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
10 sept. 2006 à 18:19
L'executable possede ses propres data quelque part dans l'espace mémoire occupé par lui même.La quantité de mémoire du programme est déterminé a la compilation et ne peut plus évoluer.
Cette espace peut etre augmenté de manière dynamique,c'est a dire que l'on demande au systeme d'allouer une certaine quantité de mémoire au programmme (globalalloc).
        ToutEnMasm

                                  
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 sept. 2006 à 01:57
A mettre en asm, pas le temps:

pmem = VirtualAlloc(0, TailleBlocVoulue, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);

utilisation du bloc pointé par pmem.
puis libération du bloc:
VirtualFree(pmem, 0, MEM_RELEASE);

ciao...
BruNews, MVP VC++
0
Rejoignez-nous