2 pièce(s) jointe(s)
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:
"\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:
\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