IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

Modification du point d'entrée fichier .elf


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre confirmé

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 377
    Points : 597
    Points
    597
    Par défaut Modification du point d'entrée fichier .elf
    Bonjour,

    je suis actuellement en train de travailler sur un petit logiciel qui permet d'insérer du code dans un fichier elf.

    J'arrive actuellement a agrandir mon 1er load segment d'une taille de n x pageSize et décaler toutes les références placé après celui-ci. J'arrive aussi insérer du code après le load segment I et à le faire exécuter. Cependant je n'arrive pas à repartir sur mon ancien point d'entrée.

    Entrons un peu dans les détails :

    je travaille sur une copie de /bin/cat le point d'entrée d'origine pointe sur l'adresse 0x08049060.

    Je modifie alors la valeur du point d'entrée ( E_ENTRY ) pour le faire pointe après la fin du load segment I ce qui correspond à l'adresse : 0x8050a2c.

    J'insère le shellcode suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xb0\x04\xb3\x01\xeb\x05\x59\xb2\x0d\xcd\x80\xe8\xf6\xff\xff\xffHello World !"
    Lors de l’exécution j'ai bien le hello world affiché dans ma console. Je veux maintenant rediriger mon code vers le point d'entrée d'origine.

    J'ai donc remplacer mon hello world par le shellcode suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \xff\x25\x60\x90\x04\x08
    Ce qui représente un jmp à l'adresse absolu de l'ancien point d'entrée. C'est la que survient mon problème, mon programme segment fault.

    J'utilise alors ida-pro, afin de voir ou survient le problème. Le point d'entrée est correcte, et le jump saute bien à l'adresse voulu. Cependant le code après celui-ci est mal interprété. Par exemple la première instruction tient normalement sur 2 octets, mais est interprété sur 4 ce qui rend le programme invalide.

    J'ai mis en annexe deux images correspondant au code des assemblé par ida-pro.

    Merci de votre aide, je suis évidement disponible pour tout complément d'informations
    Images attachées Images attachées   

  2. #2
    Membre confirmé

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 377
    Points : 597
    Points
    597
    Par défaut
    j'ai trouvé une solution. Mon jump ne fonctionnait pas.

    J'ai remplacer mon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \xff\x25\x60\x90\x04\x08
    par un saut d'un offset relatif sur 4 bytes

    J'ai cru comprendre que le saut absolue ne peut se faire directement, est-ce quelqu'un aurait des précisions sur ce sujet ? Car l'opcode " FF 25 *addr" devrait fonctionner... j'ai cru comprendre que l'on ne pouvait pas faire de saut absolu directe, cela veut-il dire que je suis obligé de passé par un registre ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VS2010] Déterminer fichier contenant le point d'entrée
    Par eilgin dans le forum Visual Studio
    Réponses: 0
    Dernier message: 03/12/2012, 11h54
  2. Modification de lignes dans un fichier...
    Par Life Hunter dans le forum Langage
    Réponses: 11
    Dernier message: 25/08/2005, 02h37
  3. mcinfo.exe-Point d'entrée introuvable
    Par Milouz79 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 03/08/2005, 22h31
  4. Export DLL et noms des points d'entrée
    Par Dozer dans le forum MFC
    Réponses: 5
    Dernier message: 03/06/2005, 10h49
  5. visualiser les points d'entrée d'un dll
    Par DenisLorrain dans le forum Windows
    Réponses: 4
    Dernier message: 06/07/2004, 01h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo