· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› PE section

Посл.отвђт Сообщенiе


Дата: Янв 31, 2003 16:47:08

Как добавить в PE файл секцию и впихнуть в нее свои данные,но оставить
оригинальную точку входа.Может есть исходник???


Дата: Янв 31, 2003 19:01:53

Тут где-то был addsection by Freddy K.
Глянь в исходниках.


Дата: Янв 31, 2003 21:04:46

А зачем секция, только для данных или для кода который будет выполнятся тоже?


Дата: Янв 31, 2003 21:23:13

Тока для данных.Я пишу патч-креатор и хочу впихнуть в него заготовку патчера чтоб не выносить в отдельный файл.


Дата: Янв 31, 2003 22:27:12

pFileImage - указательна вуфер с имажем файла
RawSize - размер секции
pNewName - название секции




AddSection proc uses edi esi ebx pFileImage:dword, pNewName:dword, RawSize:dword

mov edi, pFileImage
add edi, dword ptr [edi+03Ch]
ASSUME edi : ptr IMAGE_NT_HEADERS
movzx eax, word ptr [edi].FileHeader.NumberOfSections
mov ebx, eax
inc eax
mov edx, sizeof IMAGE_SECTION_HEADER
imul eax, edx
mov esi, edi
add esi, 0F8h
ASSUME esi : ptr IMAGE_SECTION_HEADER
lea edx, [eax][esi].PointerToRawData
sub edx, pFileImage
.if edx < [edi].OptionalHeader.SizeOfHeaders
mov ebx, esi
sub esi, sizeof IMAGE_SECTION_HEADER
ASSUME ebx : ptr IMAGE_SECTION_HEADER
mov eax, [esi].VirtualAddress
add eax, [esi].Misc.VirtualSize
mov ecx, [edi].OptionalHeader.SectionAlignment
xor edx, edx
div ecx
.if edx
inc eax
.endif
mul ecx
mov [ebx].VirtualAddress, eax
mov eax, RawSize
mov ecx, [edi].OptionalHeader.SectionAlignment
xor edx, edx
div ecx
inc eax
mul ecx
mov [ebx].Misc.VirtualSize, eax
add [edi].OptionalHeader.SizeOfImage, eax
mov eax, RawSize
mov ecx, [edi].OptionalHeader.FileAlignment
xor edx, edx
div ecx
.if edx
inc eax
.endif
mul ecx
mov dword ptr [ebx].SizeOfRawData, eax
invoke lstrcpyn, addr [ebx].Name1, pNewName,9
mov [ebx].Characteristics, 0E00000E0h
mov eax, [esi].PointerToRawData
add eax, [esi].SizeOfRawData
mov ecx, [edi].OptionalHeader.FileAlignment
xor edx, edx
div ecx
.if edx
inc eax
.endif
mul ecx
mov [ebx].PointerToRawData, eax
inc [edi].FileHeader.NumberOfSections
lea eax, [ebx].Name1
sub eax, pFileImage
@@Error:
.endif
ret
ASSUME ebx : nothing
ASSUME esi : nothing
ASSUME edi : nothing

AddSection ENDP


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.065