라이브러리 함수 디버깅 ?

storky의 이미지

$ gdb -q attackme
(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) break main
Breakpoint 1 at 0x80483be
(gdb) run
Starting program: /home/wargame/attackme
 
Breakpoint 1, 0x080483be in main ()
(gdb) break exit
Breakpoint 2 at 0x4004d8d6
(gdb) cont
Continuing.
 
Breakpoint 2, 0x4004d8d6 in exit () from /lib/libc.so.6

위 처럼 라이브러리 함수에 중지점을 설치하여 디버깅 하려면 어떻게 해야하나요?
아무리해도 저는 밑과 같이 되네요. 프로그램이 그대로 끝나버립니다.;

$ gdb -q vul
(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) break main
Breakpoint 1 at 0x8048382
(gdb) run aaaa
Starting program: /home/wargame/vul aaaa
(no debugging symbols found)
(no debugging symbols found)
 
Breakpoint 1, 0x08048382 in main ()
(gdb) break execve
Breakpoint 2 at 0xb11abc
(gdb) cont
Continuing.
 
Program exited with code 0260.

rookey94의 이미지

혹시 라이브러리도 디버깅 가능(-g)하게 컴파일 되어 있는지 확인하셨나요?

가능하면 소스 path도 같이 설정해 놓으면 편하게 디버깅이 가능하실듯 합니다. ^^;

qkrwncks593의 이미지

GCC 컴파일러로 컴파일할때 -g 옵션을 줘서 컴파일하면 GDB 로 디버깅할때 추가정보를 제공합니다.

-g 옵션을 줘서 컴파일후 gdb 에는 -q 옵션을줘서 디버깅을 해보세요.

버퍼오버플로우 공부하시는것 같은데 안되면 제공된 소스코드로 다시 다른파일로 컴파일을 시도해보세요