Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Скачай какой нить пример работы с PE 09.06.04 15:49 Число просмотров: 1697
Автор: amirul <Serge> Статус: The Elderman
|
Их в инете навалом. И смотри. Доки по PE есть в MSDN (сделай поиск по IMAGE_NT_HEADERS)
> Хотелось бы узнать как с помощью си перезаписать ПЕ > заголовок и добавить свою секцию, мне бы желательно пример. > Не могу про это инфу найти, помогите :)
Общий алгоритм такой
PVOID ImageBase;
PIMAGE_NT_HEADERS NtHeaders;
PSECTION_HEADER SectionHeader;
Мэпишь файл (или читаешь его в память) по какому нибудь адресу ImageBase
NtHeaders = ImageNtHeader(ImageBase);
if (NtHeaders == NULL)
goto fail;
SectionHeader = (PSECTION_HEADER)(((PCHAR)&NtHeaders->OptionalHeader)+NtHeaders->FileHeader.SizeOfOptionalHeader) + NtHeaders->FileHeader.NumberOfSections;
strncpy(SectionHeader->Name, "SECTNAME", 8);
и т.д.
Виртуальный адрес берешь из предыдущей секции + длина предыдущей секции (обязательно соблюдать выравнивание как в файле так и в виртуальной памяти: NtHeaders->OptionalHeader.SectionAlignment и NtHeaders->OptionalHeader.FileAlignment иначе винда просто не загрузит файл).
Потом
NtHeaders->FileHeader.NumberOfSections++;
NtHeaders->OptionalHeader.SizeOfImage += NewSectionSize;
|
|
|