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 :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.
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 !"
J'ai donc remplacer mon hello world par le shellcode suivant :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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part \xff\x25\x60\x90\x04\x08
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
Partager