Я собирал золотые рыбки ядра с:Как отлаживать собственный код Android в ядре?
[ ] Optimize for size,
[*] Kernel hacking
[*] Compile the kernel with debug info
[*] KGDB: kernel debugging with remote gdb —>
[*] Enable dynamic printk() call support
Я начал AVD с собранным ядром.
emulator -kernel goldfish/arch/arm/boot/zImage -avd TestAVD
Я оттолкнул скомпилированный гр программу на AVD.
И я скачал эти библиотеки (я не уверен, если это правильный путь)
adb pull /system/lib ./debuginfo/lib
adb pull /system/bin/linker ./debuginfo/lib
пробег gdbserver:
gdbserver 127.0.0.1:7777 ./a
вперед порт:
adb forward tcp:7777 tcp:7777
запустить GDB
gdb-multiarch ./a
указать каталог поиска:
set solib-search-path ./debuginfo/lib
подключения к устройству
target remote :7777
Я вскрыт на, например, близко.
0xaf0ae228 in close() from /home/wuyihao/android_sec/debuginfo/lib/libc.so
1: x/i $pc
=> 0xaf0ae228 <close+8>: svc 0x00000000
(gdb) list
No symbol table is loaded. Use the "file" command.
Я не получил источник. Итак, я попытался перекомпилировать ядро с переменной CFLAG = "- g"
Ничего особенного.
Спасибо!
ps: Я заметил, что загруженные библиотеки все лишены.
Спасибо Кравчук! Я смотрю на него не потому, что что-то не так, а потому, что я отлаживаю программу CVE PoC. Это не часть ядра. Можете ли вы дать мне несколько советов о том, как получить DWARF из/system/lib/libraries? –
Я хочу установить точку прерывания inet_dgram_disconnect. Но я не могу пойти прямо в ядро, не так ли? –
@ 吴一昊 Нет, вы не можете просто попасть в пространство ядра; вам нужно вместо этого использовать kgdb. –