Для этого вам нужен дизассемблер - objdump
просто выводит информацию - она может не дать вам достаточно информации, так как требуется некоторый анализ, прежде чем вы сможете определить, где он используется.Вам нужно получить XREFs
для строки, которую вы имеете в виду.
Если вы откроете свой двоичный файл в дизассемблере, он, вероятно, будет иметь возможность показать вам строки, которые присутствуют в двоичном файле свозможность перейти к месту, где используется строка (это может быть несколько мест).
Я продемонстрирую это, используя radare2 .
Открыть двоичный файл (Я буду использовать ls
здесь)
r2 -A / bin / ls
, а затем
из
для отображения всех строк.Их много, вот выдержка
000 0x00004af1 0x100004af1 7 8 (4.__TEXT.__cstring) ascii COLUMNS
001 0x00004af9 0x100004af9 39 40 (4.__TEXT.__cstring) ascii 1@ABCFGHLOPRSTUWabcdefghiklmnopqrstuvwx
002 0x00004b21 0x100004b21 6 7 (4.__TEXT.__cstring) ascii bin/ls
003 0x00004b28 0x100004b28 8 9 (4.__TEXT.__cstring) ascii Unix2003
004 0x00004b31 0x100004b31 8 9 (4.__TEXT.__cstring) ascii CLICOLOR
005 0x00004b3a 0x100004b3a 14 15 (4.__TEXT.__cstring) ascii CLICOLOR_FORCE
006 0x00004b49 0x100004b49 4 5 (4.__TEXT.__cstring) ascii TERM
007 0x00004b60 0x100004b60 8 9 (4.__TEXT.__cstring) ascii LSCOLORS
008 0x00004b69 0x100004b69 8 9 (4.__TEXT.__cstring) ascii fts_open
009 0x00004b72 0x100004b72 28 29 (4.__TEXT.__cstring) ascii %s: directory causes a cycle
, давайте посмотрим, где используется последний.Если мы перейдем к месту, где он определен 0x100004b72
.Мы можем видеть это:
;-- str.s:_directory_causes_a_cycle:
; DATA XREF from 0x100001cbe (sub.fts_open_INODE64_b44 + 378)
И здесь мы видим, где на него ссылаются -> DATA XREF.Мы можем переместиться туда (s 0x100001cbe
) и там мы увидим, как он используется.
⁝ 0x100001cbe 488d3dad2e00. lea rdi, str.s:_directory_causes_a_cycle ; 0x100004b72 ; "%s: directory causes a cycle"
⁝ 0x100001cc5 4c89ee mov rsi, r13
⁝ 0x100001cc8 e817290000 call sym.imp.warnx ;[1]
Имея местоположение, вы можете установить точку останова (r2 также является отладчиком) или использовать ее в gdb
.