Сейчас на форуме: tyns777, cppasm, dutyfree, asfa (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Увеличение размера DOS заголовка.
Посл.ответ Сообщение

Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 16 марта 2017 20:33
· Личное сообщение · #1

Экспериментирую со своим тестовым файлом. После увеличения, пересчитываем размер e_lfanew. Этого естественно мало, файл становится не рабочим. Пересчитываю PointerToRawData для всех секций. Вроде все они сдвигаются на нужное место, но этого тоже мало. Подскажите какие значения мне нужно пересчитать для восстановления работоспособности файла.



Ранг: 160.9 (ветеран), 1thx
Активность: 0.050
Статус: Участник

Создано: 16 марта 2017 23:09
· Личное сообщение · #2

Я так полагаю что нужно почитать формат на МС и вопросы отпадут.



Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 16 марта 2017 23:14
· Личное сообщение · #3

CiganЯ пытаюсь сократить время изучения формата, если вы не знаете ответа то писать в теме нет необходимости!



Ранг: 54.0 (постоянный), 49thx
Активность: 0.721.1
Статус: Участник

Создано: 16 марта 2017 23:21
· Личное сообщение · #4

какой вы злой прогер)

Добавлено спустя -59 минут
тестовый файл надо глянуть



Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 16 марта 2017 23:25
· Личное сообщение · #5

SDK пишет:
тестовый файл надо глянуть
Зачем? Там ничего нет. Соберите любой пустой файл в компиляторе.




Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

Создано: 16 марта 2017 23:28 · Поправил: DenCoder
· Личное сообщение · #6

zombi-vadim
Во-первых, Вы неправильно выразились! Размер DOS-заголовка всегда 0x40 байт!
Во-вторых, e_lfanew(по смещению 0x3C) - не размер заголовка, а смещение следующего заголовка, который в основном всегда PE!

По сему, просто подозрения, что неправильно меняете значение поля e_lfanew...

Добавлено спустя -58 минут
Ну, а в-третьих, раз нельзя глянуть файл, то, упражняясь в телепатии, вангую, что Вы вдобавок забыли про ALIGNMENT ))

-----
IZ.RU




Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 16 марта 2017 23:37 · Поправил: dosprog
· Личное сообщение · #7

Есть такая программка - DEXEM (Dual-EXE Manipulator (с)Suslikov) - замените целиком DOS-stub с её помощью на другой,
убедитесь в работоспособности файла-результата и посмотрите, что там поменялось по сравнению с исходным.

| Сообщение посчитали полезным: SDK

Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 16 марта 2017 23:38
· Личное сообщение · #8

DenCoder пишет:
По сему, просто подозрения, что неправильно меняете значение поля e_lfanew...
Да я неправильно выразился, я увеличиваю размер между DOS-заголовком и следующем заголовком PE. Допустим добавляем некое количество нулей между ними.




Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

Создано: 16 марта 2017 23:44 · Поправил: DenCoder
· Личное сообщение · #9

Количество нулей(нулевых байт) должно быть кратно 8. Другого я не видел

-----
IZ.RU




Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 16 марта 2017 23:53
· Личное сообщение · #10

DenCoderЧто то вы мозг компоситуете после дос заголовка может идти This program must be run under Win32 или This program cannot be run in DOS mode , потом идет или не идет рич сигнатура. Размеры e_lfanew получатся разные.



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 17 марта 2017 00:00 · Поправил: dosprog
· Личное сообщение · #11

) Э. повежливей.
DenCoder прав.
DOS-MZ заголовок имеет размер 0х40, такой у него формат.
Всё остальное, до PE- заголовка, - это собственно DOS'овский исполняемый EXE.
Там может быть вообще что угодно, разного размера.
А может не быть вообще ничего - сразу по смещению 40h и будет PE-заголовок.
Такое делают некоторые упаковщики.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 17 марта 2017 00:04
· Личное сообщение · #12

zombi-vadim пишет:
Соберите любой пустой файл в компиляторе.

Это нам надо, что ли? Есть файл-выкладывай. Нет-нечего и мозг компоситуете тогда.
Как минимум дебаг инфа и инфа о подписи содержат file offset, и их надо пересчитывать.

| Сообщение посчитали полезным: DenCoder, kampaster

Ранг: 16.3 (новичок), 2thx
Активность: 0.150.22
Статус: Участник

Создано: 17 марта 2017 00:08
· Личное сообщение · #13

dosprog пишет:
Всё остальное, до PE- заголовка
Простите, я просто задаю вопрос а на него получаю еще десять вопросов. Я что то запихнул между DOS-MZ и PE- заголовок. Соответственно пересчитал e_lfanew. Как мне восстановить файл?



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 17 марта 2017 00:09 · Поправил: dosprog
· Личное сообщение · #14

zombi-vadim пишет:
Как мне восстановить файл?

- Из резервной копии.

DEXEM попробовали?


DenCoder пишет:
Количество нулей(нулевых байт) должно быть кратно 8. Другого я не видел

.. выравнивание по QWORD ..






Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

Создано: 17 марта 2017 00:11
· Личное сообщение · #15

zombi-vadim
RTFM, вообще-то!

-----
IZ.RU


| Сообщение посчитали полезным: plutos

Ранг: 54.0 (постоянный), 49thx
Активность: 0.721.1
Статус: Участник

Создано: 17 марта 2017 00:56
· Личное сообщение · #16

DEXEM попробовали?

еще бы знать каким пользоваться?)



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 17 марта 2017 00:59
· Личное сообщение · #17

SDK пишет:
еще бы знать каким пользоваться?)


--> Этот <-- нормальный.




Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 17 марта 2017 05:22
· Личное сообщение · #18

zombi-vadim пишет:
я увеличиваю размер между DOS-заголовком и следующем заголовком PE. Допустим добавляем некое количество нулей между ними.

про выравнивание уже написали.
и не забываем, что ПЕхидер обязан присутствовать в памяти после загрузки модуля.
а значит, он должен либо находиться в пространстве какой-либо секции, либо возле ДОСхидера (ImageBase .. ImageBase+SectionAlignment)




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 17 марта 2017 10:44
· Личное сообщение · #19

zombi-vadim пишет:
Я пытаюсь сократить время изучения формата, если вы не знаете ответа то писать в теме нет необходимости!


Зомби-новичок по имени Вадим идёт отдыхать и учиться вежливости на несколько дней.
Уж слишком заметна у этого зомби нехватка того, чего так не хватает всем зомби.

Почитать на досуге классику:

Номер раз: PE Format
pecoff.docx, Size: 206 KB, Date Published: 1/24/2017
http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx

Номер два: Об упаковщиках в последний раз: Часть первая - теоретическая




-----
EnJoy!


| Сообщение посчитали полезным: ajax, DenCoder, plutos
 eXeL@B —› Вопросы новичков —› Увеличение размера DOS заголовка.
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати