Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
30th
Июн
Как сигнатура узнает какие байты РЕ файла соотвествуют ее частям?
Posted by maloy under assembler
Dimka-novitsek
К примеру, я хочу начать разбор файла.
Отсчитывать байты равными долями или же как?
То есть для каждого поля структуры- сигнатуры, как опридилить что чему соотвествует?
typedef struct _IMAGE_DOS_HEADER { // DOS .EXE заголовок
USHORT e_magic; // Магическое число 4D 5A
USHORT e_cblp; // Количество байт на последней странице файла
USHORT e_cp; // Количество страниц в файле
USHORT e_crlc; // Relocations
USHORT e_cparhdr; // Размер заголовка в параграфах
USHORT e_minalloc; // Minimum extra paragraphs needed
USHORT e_maxalloc; // Maximum extra paragraphs needed
USHORT e_ss; // Начальное (относительное) значение регистра SS
USHORT e_sp; // Начальное значение регистра SP
USHORT e_csum; // Контрольная сумма
USHORT e_ip; // Начальное значение регистра IP
USHORT e_cs; // Начальное (относительное) значение регистра CS
USHORT e_lfarlc; // Адрес в файле на таблицу переадресации
USHORT e_ovno; // Количество оверлеев
USHORT e_res[4]; // Зарезервировано
USHORT e_oemid; // OEM identifier (for e_oeminfo)
USHORT e_oeminfo; // OEM information; e_oemid specific
USHORT e_res2[10]; // Зарезервировано
LONG e_lfanew; // Адрес в файле нового .exe-заголовка
} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
Stilet
|
Сигнатура это тип. Она никак ничего не узнает, она сама представляет что-то другое.
РЕ формат читает загрузчик операционки, и как правило он опирается на смещения. Т.е. (очень грубо скажу) например 4 первых байта — указатель на сколько сместиться в глубину файла, чтоб стать на первый байт секции данных. Следующие 4 — смещение на секцию, где находится скомпилированный код.
Почитай про формат РЕ, как он устроен, и какие данные заголовок исполнимого файла хранит. Можешь, если хочешь, взять мою статью про компиляторы, я в первых главах слегка разбирал этот заголовок.
В блоге нашего клуба: http://www.programmersclub.ru/%D0%9A…D%D0%B8%D1%8F/
Там же в конце чтиво.
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)