Можно ли установить точку останова на функцию fun
с помощью gdb?
Да: GDB может установить точку останова на произвольный адрес:
(gdb) break *0x12345678
Как определить адрес удовольствия во время выполнения?
Поскольку GDB по умолчанию отключает ASLR, адрес fun
не будет меняться от запуска к запуску (если вы запускаете программу под управлением GDB с самого начала).
Для этого вам остается только найти адрес fun
.
Предположим, что ваш lib.so
связан по номеру 0
(большинство разделяемых библиотек, не связанных с предварительным соединением).
Далее предположим, что вы находитесь в Linux.
Затем info proc map
сообщит вам, где загружен lib.so
(вы хотите, чтобы его первый начальный адрес принадлежал ему). Добавьте этот начальный адрес к значению fun
, который вы обнаружили путем разборки, и установите там точку останова.
Большое спасибо моему другу! Ты спас мой день :) –