как посмотреть сборку функций libc в эльфе

как посмотреть сборку стандартных функций библиотеки c в эльфе? например, у меня есть двоичный файл, у меня есть исходный код этого двоичного файла, и я знаю, что printf вызывается в основной функции. Я хочу увидеть сборку функции printf в этом эльфе. обратите внимание, что я хочу видеть сборку в самом эльфе. я много ищу но ничего не нахожу


person taranom    schedule 29.12.2020    source источник


Ответы (1)


Вы можете скомпилировать с

~$ gcc -static prog.c

в то время как prog.c использует функции, которые вы собрали. Это позволит статически связать библиотеки, используемые с двоичным файлом.

Тогда вы можете просто:

~$ objdump --disassemble a.out

РЕДАКТИРОВАТЬ

Можно даже пойти по более простому пути: просто objdump библиотека libc:

~$ objdump --disassemble /usr/lib/libc.so.6 // or whatever the path of libc is
person YoavKlein    schedule 29.12.2020
comment
благодарю вас. если я не делаю статическую ссылку на библиотеки, не могу ли я? Я хочу знать, есть ли код этих функций (printf и scanf и ...) в двоичном формате или нет? - person taranom; 30.12.2020
comment
Я не совсем понял. Если вы хотите собрать его, вы можете objdump сам libc.so.6, как я добавил в EDIT. Если вам нужен исходный код, вы можете просто поискать его в Интернете, это открытый исходный код. - person YoavKlein; 30.12.2020