R0 CREW

Hacking: The Art of Exploitation, 2nd Edition

Всем привет!
Ребят, кто читал книгу Hacking: The Art of Exploitation, 2nd Edition.

Пример следующий:

#include <stdio.h>
#include <string.h>
int main() {
char str_a[20];
strcpy(str_a, “Hello, world!\n”);
printf(str_a);
}

При прогоне через gdb, автор пишет, что при последующих прогонах адрес функции strcpy меняется незначительно, типа встроенная защита в ядро от эксплоитов. В упор не вижу. Кто разбирал тему, подскажите, плиз.

http://en.wikipedia.org/wiki/Address_space_layout_randomization

Немного прояснилось, однако повторяю это пример, адрес у меня не меняется, более того он не меняется в примерах автора. Кому верить?

Breakpoint 4, 0xb7f076f4 in strcpy () from /lib/tls/i686/cmov/libc.so.6
(gdb) i r eip
eip 0xb7f076f4 0xb7f076f4 <strcpy+4>
(gdb) x/5i $eip
0xb7f076f4 <strcpy+4>: mov esi,DWORD PTR [ebp+8]
0xb7f076f7 <strcpy+7>: mov eax,DWORD PTR [ebp+12]
0xb7f076fa <strcpy+10>: mov ecx,esi
0xb7f076fc <strcpy+12>: sub ecx,eax
0xb7f076fe <strcpy+14>: mov edx,eax
(gdb) continue
Continuing.

Breakpoint 4, 0xb7f076f4 in strcpy () from /lib/tls/i686/cmov/libc.so.6
(gdb) bt
#0 0xb7f076f4 in strcpy () from /lib/tls/i686/cmov/libc.so.6
#1 0x080483d7 in main () at char_array2.c:7
(gdb) cont
Continuing.

Перезапусти gdb.

Перезапуск не помог, буде считать это злой шуткой автора)))

кстати, а кто решил загадку на первых страницах книги, про числа? В Предисловии вроде…

Да включи ты ASLR и попробуй. http://askubuntu.com/questions/318315/how-can-i-temporarily-disable-aslr-address-space-layout-randomization

Проверяй, что ASLR действительно включен (см предыдущий ответ).
По-умолчанию GDB выключает ASLR для отлаживаемой программы. Это поведение отключается командой:

set disable-randomization off

Всем спасибо, действительно ASLR.