исполняемый файл C++ будет содержать линкеры, модули и другие, я хотел бы посмотреть на его содержание, я использую Linux, как я могу просмотреть содержимое a.out? , которую команда должна использовать для просмотра a.out, текстовые редакторы не отображают содержимое ...Как увидеть содержимое файла a.out?
ответ
Вы можете использовать nm
, чтобы увидеть внутренние символы и objdump
, чтобы разобрать. К примеру:
objdump -D a.out | less
Однако обратите внимание, что во время последнего связывании объектных файлов в исполняемый много символов и внутренних данных получить устранены, поэтому вы не будете в состоянии понять структуру, как вы бы с объектных файлов.
Если вы хотите отредактировать и изменить исполняемый файл, я предлагаю вам использовать редактор hte
, который может действовать как дизассемблер для исполняемых файлов x86. Если вы являетесь пользователем debian/ubuntu, имя пакета «ht» (не «hte»).
Также я написал little elf disassembly library, который еще не завершен, но довольно забавно. Однако вы можете найти другие (более полные и, вероятно, лучшие) реализации!
Используя команду nm
, вы можете проверить двоичный файл и посмотреть, какие символы определены. Если вы хотите, чтобы увидеть фактический код, который был использован для создания двоичного файла понадобится декомпилятор, который будет только в состоянии частично восстановить исходный код в качестве части своей сути теряется во время компиляции.