Commande >>> Buffer

cs_Stormy Messages postés 255 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 16 janvier 2007 - 11 avril 2005 à 16:18
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 12 avril 2005 à 21:46
Salut à tous,

Je cherche une solution afin de charger dans un Tampon une suite de commande ASM ou l'ensemble d'un code appartenant à une fonction C (comme avec une fonction strcat par exemple). En d'autres termes, serait-il possible qu'une portion d'un code compilé soit pointé et copié dans un Buffer. Lors du développement, on situe facilement les différents corps, par contre c'est difficile une fois compilé. Je voudrais éviter l'usage d'une espèce de ShellCode en Hexadécimal. Bien qu'il s'agissent d'une fantaisie absolue, je vous livre une explication de ce que je recherche :

char Tampon[MAX];

Fonction Exemple()
{
Bla Bla Bla;
}

void Main (void)
{
strcat( Tampon, [code de fonction exemple] );
( ( void (*)( void) ) &Tampon )();
return;

}

Merci à tous ++

5 réponses

Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
11 avril 2005 à 21:27
heu... en C++ je vois pas.... je sais meme pas si c'est possible de seulement accéder a l'adresse d'un call

par contre si tu interfaces ton prog principal avec de l'assembleur
(que tu peux inclure directement dans ton .cpp) ca doit pouvoir se
faire, les commandes asm ca fait 3 bytes en général.(ou 2 ... tu mets
tout ton buffer a zéro au début pr pas avoir de pb), tu y accède par
leur adresse , tu enregistre le byte correspondant, et puis tu
l'éxécute qd tu veux (remarques rien que pour ca, il faudra l'écrire au
bon endroit ca doit pas etre de la tarte)

je me renseigne

++

ad




_______________________


Omnia vincit labor improbus
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 avril 2005 à 09:11
Salut,

à part écrire le code à récupérer dans un fichier asm, je ne vois pas d'autre solution.
Il faut (offsetFin - offsetDebut) pour avoir la taille de code à mettre dans le buffer, en asm no problème on met un label sous le bloc et on peut calculer aisément. En C c'est obtenir l'offsetFin qui pose problème, on ne sait pas comment le compilo va optimiser et réorganiser le code.
Arnaud16022 > la taille des instructions varie suivant l'instruction et le nbr d'opérandes (de 0 à 3 opérandes).

ciao...
BruNews, MVP VC++
0
cs_Stormy Messages postés 255 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 16 janvier 2007
12 avril 2005 à 13:52
je m'en doutais sérieusement. Il ne me reste plus que l'ption du traditionnel ShellCode en Hexadécimal (ou AlphaNumérique) dans un Tampon avec un pointeur dessus :
( ( void (*)( void) ) &Tampon )();
.En attendant, merci les gars pour la confirmation. Bon code à tous et ++
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
12 avril 2005 à 21:09
"Arnaud16022 > la taille des instructions varie suivant l'instruction et le nbr d'opérandes (de 0 à 3 opérandes)."

oui je sais que le nbre varie... mais ya quoi comme instruction qui prend 0 parametres?


_______________________


Omnia vincit labor improbus
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 avril 2005 à 21:46
RDTSC par exemple, la 1ere qui me vient à l'esprit.

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