Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1076 connectés 

  FORUM HardWare.fr
  Programmation
  C

  injection de code dans fichier PE

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

injection de code dans fichier PE

n°1507631
_ky_
Posté le 26-01-2007 à 21:34:01  profilanswer
 

Salut a tous, je cherche a injecter du code dans un fichier executable au format pe (sous xp 32bits)
 
le code ouvre simplement une message box qui affiche "salut".
 
le probleme est qu'une fois compile, les addresses utilises dans le code que je veux injecter ne sont pas valide dans le fichier cible
 
je voudrais donc (si cela est possible) creer un label qui me permettrait d'utiliser des addresses relatives et donc d'avoir des pointeurs valides
 
(j'ai teste avec goto, mais ca ne semble pas fonctionner)
 
voila voila  :hello:


Message édité par _ky_ le 26-01-2007 à 21:36:20
mood
Publicité
Posté le 26-01-2007 à 21:34:01  profilanswer
 

n°1507646
Ace17
Posté le 26-01-2007 à 22:27:12  profilanswer
 

Tu fais ca en quel langage ? L'assembleur me parait obligatoire pour ce genre de manip, des que tu veux controler un peu le code genere ...

n°1507649
_ky_
Posté le 26-01-2007 à 22:30:09  profilanswer
 

c'est du c, je pourrais peut-etre utiliser de l'assembleur in line, mais je suis pas sur : /

n°1507652
Ace17
Posté le 26-01-2007 à 22:38:12  profilanswer
 

Avec de l'assembleur inline, tu seras sur de ce que tu injectes, sauf bien sur si tu appelles des fonctions externes dans ce code. Reste a reperer dans ton module ou se trouve ce que tu injectes.  
 
Si tu veux appeler MessageBox, je te souhaite bien du plaisir, car il te faut reperer dans la table d'importation du PE l'entree qui correspond a MessageBox, et la rajouter au cas ou elle n'existe pas ....  Une autre alternative consiste a reperer l'adresse ou reside user32 et te farcir la table d'exportation pour trouver MessageBox ...

n°1507659
_ky_
Posté le 26-01-2007 à 23:03:04  profilanswer
 

jme suis deja amuse a parser la table d'exportation
 
mon probleme (pour le moment :) ) c'est juste de savoir ou son stockees mes datas pour la message box

n°1507664
Ace17
Posté le 26-01-2007 à 23:27:17  profilanswer
 

Ouais, ben moi je dis : assembleur. Y'a un truc assez simple qui consiste a faire un call relatif vers l'instruction suivante qui est un pop. Ainsi tu reperes ou tu es dans la memoire. Apres, si tu sais par rapport a ce call ou se trouvent tes donnees, c'est gagne.

n°1507670
anordem
Posté le 26-01-2007 à 23:38:00  profilanswer
 

Pour répondre simplement, une technique couramment employée est de calculer un delta comme suit :  
 


    call Delta
Delta:
    pop ebp ; ou n'importe quel registre en fait
    sub ebp, Delta
...
    push 0
    lea eax, [ebp+Titre]
    push eax
    lea eax, [ebp+Texte]
    push eax
    push 0
    call MessageBoxA


 
C'est ce qu'on appelle un code relogeable. Le delta se trouvant dans EBP, il suffit de l'ajouter à toutes tes adresses.
 
Edit : Comme le dit Ace17 :)
 
Sinon, une méthode plus simple pour injecter du code sans se prendre la tête, est d'utiliser VirtualAllocEx pour créer une section virtuelle dans le processus distant puis d'écrire dedans avec WriteProcessMemory et enfin d'exécuter la fonction avec CreateRemoteThread. La fonction injectée étant simplement un LoadLibraryA qui va charger ta dll. Ainsi, tu n'as qu'à créer un petit bout de code relogeable en asm qui va récupérer l'adresse de LoadLibraryA et l'appeler en passant en paramètre le chemin de ta dll et tout le code que tu veux en C dans une dll.
 


Message édité par anordem le 26-01-2007 à 23:39:02
n°1507671
_ky_
Posté le 26-01-2007 à 23:44:12  profilanswer
 

bon, ben jvais chercher du cote de l'asm je crois...
 
merci a tous

n°1507681
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 27-01-2007 à 00:09:23  profilanswer
 

y'a un excellent article ici : http://www.codeproject.com/system/ [...] sembler3_2
 
on devrait donner une médaille au créateur de CodeProject tellement ce site est précieux et une mine inépuisable de culture de programmation


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  injection de code dans fichier PE

 

Sujets relatifs
Modification d'un fichier htmlmodification d'une chaine de caractere dans un fichier
[VBA] Code de compression d'une BBDForcer l'ouverture d'un fichier d'une page html
données fichier texte vers BDDLecture d un fichier (presque) text
[PERL] Ajouter des balises dans un fichier XMLpb scipt shell comparer un argument a une valeur dan un fichier
Code html et Lien href dans la balise <description> d'un item RSS 
Plus de sujets relatifs à : injection de code dans fichier PE


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR