Возможно, я не спрашиваю об этом в правильном месте, но есть ли где-нибудь, где я могу исследовать, какова структура исполняемых двоичных файлов? Как в том, как организован код, где хранятся символы и т. Д.
Зависит от того, какая платформа вам интересна!
Windows использует двоичный формат PE .
В Linux используется ELF .
Mac OS (и iOS) используют Mach-O .
Некоторые старые системы UNIX используют a.out .
Структура двоичного файла определяется приложением, которое его создало.Например, код, который вы пишете на Java или C и записываете его в файл, может быть прочитан только кодом, который знает структуру того, как он был написан.
В случае исполняемых файлов существуютразличные виды, которые варьируются в зависимости от операционных систем.Например, чтобы проверить структуру файлов исполняемого файла и формата связывания (ELF), см. man elf: http://www.kernel.org/doc/man-pages/online/pages/man5/elf.5.html
man elf
Вы должны понимать, что такое файл ELF!Вот ваша отправная точка .
И эта статья аккуратно объясняет, как разбирать файлы ELF, используя readelf и objdump
readelf
objdump