Вывод из файла nm -n выглядит следующим образом:
0000000000800000 A _stack
0000002001000000 W _RELAX_END_
0000002001000010 T _start
0000002001000024 t
0000002001000024 T f1
0000002001000036 t
0000002001000036 T f2
0000002001000052 t
0000002001000052 T f4
0000002001000064 t
0000002001000064 T f5
0000002001000078 t
Этот вывод кажется мне несколько странным. Обычно, когда я запускаю nm, я вижу почти каждую строку с именем символа в третьем столбце. Что может привести к тому, что вывод будет сгенерирован таким образом? Существует ли символ, который существует, например, по адресу 0000002001000024
, который был удален?
This output looks somewhat odd to me.
Это является нечетно.
Is there a symbol that exists at, for example, address
0000002001000024
that has been stripped?
Разделенные символы не отображаются в таблице символов, в отличие от этого.
Вероятно, это артефакт (баг?) компилятора или ассемблера, который по какой-то причине выдает локальный символ с пустым именем для каждого глобального символа, который он выдает.
Также возможно, что там есть непустое имя был, но это имя было перезаписано (одной или несколькими) NUL
s как часть какой-то меры обфускации / предотвращения обратного проектирования.