http://felix.abecassis.me/2012/08/gdb-debugging-stripped-binaries/
http://techbliss.org/threads/ida-pro-debugging-via-wmware-linux-os-x.474/
Note:
turn off ASLR:
sudo bash -c "echo 0 > /proc/sys/kernel/randomize_va_space"
turn off Stack protect+ nx bit:
gcc -o lv5 lv5.c -fno-stack-protector -z execstack
gcc -m32 -o lv5 lv5.c -fno-stack-protector -z execstack
set intel syntax gdb default:
echo "set disassembly-flavor intel" > ~/.gdbinit
echo "set follow-fork-mode child" > ~/.gdbinit
Free port used:
lsof -i:80
kill ten_process
Xác định độ lệch esp giữa gdb và thực tế bằng get_sp.c( Kiểm tra lại aslr xem đã tắt chưa bằng cách chạy 1 vài lần xem địa chỉ có bị thay đổi không):
#include "stdio.h"
unsigned long get_sp(void) {
__asm__("movl %esp,%eax");
}
void main() {
printf("0x%x\n", get_sp());
}
Biên dịch và chạy file này, in ra một địa chỉ: 0xbffff5e8 ( thực tế)
Thử debug bằng gdb :
gdb -q get_sp
disass main
0x08048424 <+0>: push ebp 0x08048425 <+1>: mov ebp,esp 0x08048427 <+3>: and esp,0xfffffff0 0x0804842a <+6>: sub esp,0x10 0x0804842d <+9>: call 0x804841d <get_sp> 0x08048432 <+14>: mov DWORD PTR [esp+0x4],eax 0x08048436 <+18>: mov DWORD PTR [esp],0x80484e0 0x0804843d <+25>: call 0x80482f0 <printf@plt> 0x08048442 <+30>: leave 0x08048443 <+31>: ret
Đặt breakpoint ở leave
b *(main+30)
r
Sẽ thấy chương trình in ra địa chỉ $esp ở gdb
Starting program: /home/f2_ubuntu_x86/Desktop/iosmash/get_sp
0xbffff598
Do đoạn trên sub esp,0x10. -> địa chỉ thực tế hàm get_sp sẽ là
0xbffff598 +0x10=0xbffff5a8
-> Độ chênh ( giảm xuống của esp khi chạy trong gdb) =0xbffff5e8 -0xbffff5a8 = 0x40
-> Khi debug trong gdb mà ret add là
"\xa0\xfb\xff\xbf" ( như ở lv5) thì ret add ở bên ngoài sẽ phải đổi thành "\xf0\xfb\xff\xbf"
gdb file_name
set disassembly-flavor intel
disassemble main
gdb command list:
- b(breakpoint) *0x1234 hoặc b *(main+30). Set breakpoint
- info breakpoints ( view list breakpoints)
- r(run) : start debug
- info r( info registers) : View registers
- x/16aw 0xbffff5e8
- x/30i mains
- Objdump -D file
- Objdump -M intel -D level01
No comments:
Post a Comment