strcpy-sse2-unaligned.S non trouvé

Je comstack le code simple ci-dessous et l’exécute en gdb. Je fixe un point d’arrêt sur la ligne strcpy. Dès que je l’exécute pour l’entrée abc, par exemple, puis que j’appuie sur s, l’erreur suivante apparaît:

Breakpoint 1, main (argc=2, argv=0x7fffffffdd98) at ExploitMe.c:9 9 strcpy(buffer, argv[1]); (gdb) s __strcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:48 48 ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S: No such file or directory. 

J’utilise Ubuntu 12.04 AMD64 et gcc 2.15. Une idée?


 main(int argc, char *argv[]) { char buffer[80]; strcpy(buffer, argv[1]); return 0; } 

Il est totalement inoffensif d’ignorer ces “erreurs” lors du débogage.

L’erreur est simplement due au fait que GDB recherche la source de la fonction strcpy . Toute fonction dans libc dont vous n’avez pas le source vous donnera une erreur similaire, par exemple:

 int *p = malloc(sizeof *p); 

Ensuite…

 (gdb) s 5 int *p = malloc(sizeof *p); (gdb) s __GI___libc_malloc (bytes=4) at malloc.c:2910 2910 malloc.c: No such file or directory. 

Vous pouvez toujours télécharger la source de GNU libc et la lier avec GDB:

 git clone https://github.com/jeremie-koenig/glibc /opt/src/glibc 

Ensuite…

 (gdb) dir /opt/src/glibc/malloc (gdb) s 5 int *p = malloc(sizeof *p); (gdb) s __GI___libc_malloc (bytes=4) at malloc.c:2910 2910 } (gdb) s 2915 } else if (!in_smallbin_range(size)) 

… qui vous permettra de parcourir le code source de malloc . Ce n’est pas particulièrement utile, mais cela peut être utile parfois.