KASLR이 활성화되어 있으면 심볼 파일과 실제 심볼 위치 사이에 오프셋이 있습니다. KASLR이 활성화 된 상태에서 GDB가 커널 심볼을 올바르게로드 할 수 없음
% cat /proc/kallsyms| grep '\<jiffies_64\>'
ffffffff86805000 D jiffies_64
% objdump -t /usr/lib/debug/boot/vmlinux-4.13.0-1-amd64 | grep '\<jiffies_64\>'
ffffffff81c05000 g O .data 0000000000000008 jiffies_64
은 텍스트 섹션 위치 찾기, 그래서 제대로 심볼 파일을로드 할 수 있습니다
% sudo gdb -c /proc/kcore
GNU gdb (Debian 8.0-1) 8.0
(gdb) add-symbol-file /usr/lib/debug/boot/vmlinux-4.13.0-1-amd64 0xffffffff85c00000
add symbol table from file "/usr/lib/debug/boot/vmlinux-4.13.0-1-amd64" at
.text_addr = 0xffffffff85c00000
(y or n) y
Reading symbols from /usr/lib/debug/boot/vmlinux-4.13.0-1-amd64...done.
GDB :
% cat /proc/kallsyms | grep '\<_text\>'
ffffffff85c00000 T _text
하지만을 나는 보정 위치에 기호 파일을로드하는 경우에도 여전히 잘못된 기호 위치를 제공 :
(gdb) p &jiffies_64
$1 = (u64 *) 0xffffffff81c05000 <jiffies_64>
GDB가 심볼을 올바른 위치에로드하도록하려면 어떻게해야합니까?
인터넷이 가장 좋은 방법이라고 말한다에'일시적으로 비활성화 kaslr' 단지 @ttsiodras로 고 밝혔다. –