Открыв много исполняемых файлов (.exe.
, .msi
) в Windows с помощью 7zip, я заметил много разных типов файлов, которые являются общими. К ним относятся .text, .data, .bss, .rdata, .pdata и т. Д. Я пытался получить информацию о них, но я не могу понять, что все они означают. Вот некоторые из них:Заголовки исполняемых разделов - значение и использование?
.text
: Раздел кода содержит инструкции программы - только для чтения..data
: Обычно используется для записи данных с некоторым инициализированным ненулевым содержимым. Таким образом, раздел данных содержит информацию, которая может быть изменена во время выполнения приложения, и этот раздел должен быть скопирован для каждого экземпляра..bss
: Используется для записи статических данных, инициализированных до нуля..rdata
: Здесь хранятся данные Const/Read-only..edata
: каталог экспорта, дескрипторы & ручки.idata
: Импорт каталога для ручек & дескрипторов. Он используется исполняемыми файлами (exe, dll и т. Д.) Для назначения импортированных и экспортированных функций..rsrc
: Секция, которая содержит информацию о различных других ресурсах, необходимых для исполняемого файла, например, значок, которое отображается при просмотре исполняемого файла в проводнике
Есть много других, которые являются общими, и я могу Не находите никакой информации. В основном это те: .pdata
, .tls
, .reloc
, СЕРТИФИКАТ, .rsrc_1
, .aspack
, .adata
, .INIT
, DATA
, CODE
, .ctors
.
Также в большинстве из них находится папка rsrc
, которая содержит такие папки, как BITMAP, CURSOR, ICON, GROUP_CURSOR, GROUP_ICON, MENU, VERSION и другие.
Некоторые исполняемые файлы также содержат больше исполняемых файлов внутри, .html
файлов, .txt
файлов и т. Д. Я также открыл тот, который ничего не содержал (по крайней мере, ничего не показано, открыв его с помощью 7zip)! [Я открыл их все с помощью 7zip. ]
Вопросы
- Что эти разделы/сегменты я разместил делать? Есть ли сайт, на котором я могу найти их все?
- Все, на что я смотрел, это PE для Windows. Являются ли эти форматы стандартными и применяются к LINUX, UNIX и т. Д. Аналогичным образом?
- Почему некоторые исполняемые файлы содержат другие исполняемые файлы внутри, или .html, .txt и другие файлы? Как они обрабатываются при запуске исполняемого файла? Что они должны делать? AFAIK все внутри исполняемого файла должно иметь только те «сегменты», которые напоминают разделы кода сборки.
- Какая у вас польза от
rsrc
? Какие ресурсы он удерживает?
Я был бы признателен, если вы могли бы разместить больше информации/ссылки о том, почему все эти используются (как низкий уровень, как это возможно) и в целом, как исполняемый файл структура должна выглядеть, что она должна содержать и т.д.
Это примерно все.
EDIT
Я нашел другие имена заголовков общий раздел. Я буду публиковать их смысл здесь для полноты.
.reloc
: Содержит таблицу перемещений..pdata
: содержит массив записей таблицы функций для обработки исключений, и указуют на записи таблицы исключений в каталоге данных изображений*data
: пользовательские названий разделов данных.init
: Этот раздел содержит исполняемые инструкции, внести вклад в код инициализации процесса. То есть, когда программа начинает работать, система организует выполнение кода в этом разделе перед основной точкой ввода программы (называемой main в программах на C)..fini
: В этом разделе содержатся исполняемые инструкции, которые вносят вклад в код завершения процесса. То есть, когда программа завершается нормально, система организует выполнение кода в этом разделе..ctors
: Раздел, который сохраняет список конструкторов.dtors
: Раздел, который содержит список деструкторов
Очень просветительский ответ сэр. Эта ссылка - это то, что я хотел и предоставляю всю информацию. Я также нашел множество других имен заголовков общих разделов, и я опубликую их все выше, чтобы отличить, где в каталоге данных они соответствуют. Еще один вопрос о «toolchain», о котором говорили вы и old_timer. Я знаю, что это такое, но что именно вы имеете в виду? AFAIK используется в процессе построения, компоновщик не задействован при запуске исполняемого файла, а только загрузчик, который загружает его в ОЗУ. Можете ли вы подробнее рассказать о «инструментальной цепочке»? Большое спасибо. –
Вы используете инструментальную цепочку для создания программы. По крайней мере, компилятор и компоновщик, возможно, дополнительные инструменты, такие как компилятор ресурсов. Некоторые языки объединяют все эти инструменты в один исполняемый файл, все идет. Ввод - исходный код, вывод - исполняемый файл. –
Хорошо. Так вот что я знал. –