Сейчас на форуме: bartolomeo, -Sanchez- (+3 невидимых)

 eXeL@B —› Вопросы новичков —› Можно ли расширить заголовок PE?
Посл.ответ Сообщение

Ранг: 26.9 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 08 марта 2006 01:00
· Личное сообщение · #1

Привет всем! Нужно расширить заголовок экзешника, хочу узнать, возможно ли такое? И если возможно, то может кто нибудь знает как?



Ранг: 162.2 (ветеран)
Активность: 0.090
Статус: Участник

Создано: 08 марта 2006 03:12
· Личное сообщение · #2

А расширять на диске или в памяти?
Если на диске, то особо сложного ничего нет, просто подвинь все секции, должно работать.
А если в памяти... В принципе можно. Но тогда придётся искать все абсолютные адреса и исправлять их.



Ранг: 26.9 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 08 марта 2006 09:09
· Личное сообщение · #3

На диске



Ранг: 26.9 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 08 марта 2006 14:21
· Личное сообщение · #4

asd
Подскажи плизз как их подвинуть



Ранг: 162.2 (ветеран)
Активность: 0.090
Статус: Участник

Создано: 08 марта 2006 16:21
· Личное сообщение · #5

.data
hmapp dd 0
hfile dd 0
mapp_addr dd 0
size_ dd 0
hight dd 0
file_name db '111.exe',0
.code
start:
invoke CreateFileA,addr file_name,GENERIC_READ OR GENERIC_WRITE,0,0,OPEN_EXISTING,0,0
inc eax
or eax,eax
jz error_open
dec eax
mov hfile,eax
invoke GetFileSize,eax,addr hight
mov size_,eax
add eax,2000h
invoke CreateFileMapping,hfile,0,PAGE_READWRITE,0,eax,0
or eax,eax
jz error_exe
mov hmapp,eax
invoke MapViewOfFileEx,hmapp,FILE_MAP_READ OR FILE_MAP_WRITE ,0,0,0,0
or eax,eax
jz error_mapp
mov mapp_addr,eax
;--------------------- двигаем секции
mov ecx,size_
mov esi,eax
dec esi
add esi,ecx
mov edi,esi
add edi,2000h
sub ecx,400h
std
rep movsb ;двигаем секции на 2000h
;----------------------------------правим заголовок
mov esi,[eax+3ch]
add esi,eax
movzx ecx,word ptr [esi+6] ;количество секций
add esi,0f8h ;начало заголовков секций
mov eax,28h
next_section:
add dword ptr [esi+14h],2000h ;новое смещение передвинутой секции на диске
add esi,eax
dec ecx
jne next_section
;-------------------------------
invoke UnmapViewOfFile,mapp_addr
error_mapp:
invoke CloseHandle,hmapp
error_exe:
invoke CloseHandle,hfile
error_open:

Код двигает все секции pe на 2000h. Т.о. на диске между заголовком и 1-ой секцией появляется 2000h свободного места. То, что там находится не грузится в память.

Следует учесть, что если у проги есть оверлей, то ей придёт конец, когда она попытается его использовать.

А зачем это надо?



Ранг: 26.9 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 08 марта 2006 16:58 · Поправил: NUCLEuS
· Личное сообщение · #6

Нужно код дописать...
P.S. для инлайна neolite 2.xx, а то там места нет, а если секцию цеплять - file corrupted говорит...



Ранг: 26.9 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 08 марта 2006 19:41
· Личное сообщение · #7

asd
Блин, оказалось цеплять секцию можно, проблема не в СРС а в том что я при цеплянии секции поганю оверлей.

Но за прогу спасибо. Прикотиццца


 eXeL@B —› Вопросы новичков —› Можно ли расширить заголовок PE?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати