| |||||
| Dernière réponse | |
|---|---|
| Sujet : Désassemblage sous gdb | |
| slvn | Deimos_ >>
 bon j'ai regardé..enfin un peu de temps libre (fait trop chaud pour aller a la plage :D) Il se trouve qu'il fait pas appel directement au nom exit. mais qu'il le traduit par une adresse + un offset.. c'est la maniere specific à gcc.. Par contre, quand tu utilises GDB, rien ne t'empêche de mettre une break point sur la fonction exit: Tappe "b exit". Le debugger te demandera simplement de confirmer que le breakpoint intervient une fonction venant d'une librarie à charger, à savoir libc6.so. En fait il en connais pas encore a ce moment le nom du symbol exit. D'ailleurs ta remarque était qu'aucun appel a exit n'apparaissait, mais simplement "jmp <_init+0xXX>". Peut etre qu'il s'agit simplement d'un moyen/d'une astuce pour alléger la table de symbol. Ensuite, tu démarres ton programme avec la commande "run" le breakpoint est touché, preuve que exit, bien que ne figurant pas explicitement, est réellement appellée. Et finallement, tu peux désassembler exit: "disassemble exit" Le code que tu voit pour exit, tu peux retrouver ses Sources, comme le dit Jar Jar, dans le package source de libc6. Mea culpa, car je t'ai induit en erreur, je pensais que exit était directement un appel au noyau, ce qui se serait traduit, non pas par une fonction précise, mais [ar une fonction plus généric (syscall). Sylvain  | 
			
| Vue Rapide de la discussion | 
|---|