Сейчас на форуме: Magister Yoda, vasilevradislav, tyns777, zombi-vadim (+3 невидимых)

 eXeL@B —› Программирование —› Добавить новую секцию
Посл.ответ Сообщение

Ранг: 16.9 (новичок)
Активность: 0.010
Статус: Участник

Создано: 06 июня 2008 09:21
· Личное сообщение · #1

Вобщем какая проблема. Добавляю секцию. Все вроде бы правильно делаю, выравнивания соблюдены. Но если я добавляю секцию в экзешник скомпиленый в Delphi или MASM, то все нормально... Но как только я добавляю секцию в экзешник скомпилированный в С++ - прога отказывается запускаться. Вопрос - что меняется при добавлении новой секции, кроме ImageSize, Object Num... Может быть я что-то упустил? Спасибо.



Ранг: 8.2 (гость)
Активность: 0.010
Статус: Участник

Создано: 06 июня 2008 09:46
· Личное сообщение · #2

Опиши подробней (что именно в PE заголовке правишь), что ты делаешь, т.к. из твоего описания вообще не понятны твои действия, кроме желания добавить секцию.



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

Создано: 06 июня 2008 09:52
· Личное сообщение · #3

Thrasher
нерабочий файл выложи.



Ранг: 16.9 (новичок)
Активность: 0.010
Статус: Участник

Создано: 06 июня 2008 09:53
· Личное сообщение · #4

Правлю ImageSize, Object Number (кол-во секций). Добавляю описание секции - Имя секции, RVA, Physical Offset, Virtual Size, Physycal Size. Больше ничего не трогаю.



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

Создано: 06 июня 2008 10:14
· Личное сообщение · #5

а сам файл то увеличиваешь на величину Physycal Size, чтоб от смещения Physical Offset было количество
байт указанных в Physycal Size?

Правда сомневаюсь, если этого не сделать, винда не дала бы запустить файл от любого компилятора.



Ранг: 16.9 (новичок)
Активность: 0.010
Статус: Участник

Создано: 06 июня 2008 10:16
· Личное сообщение · #6

Вот нерабочий файл

2753_06.06.2008_CRACKLAB.rU.tgz - PE.zip



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 06 июня 2008 10:50
· Личное сообщение · #7

Возьми прогу CFF Explorer, добавь ей секцию такого же размера как у тебя и сравни.



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

Создано: 06 июня 2008 10:50 · Поправил: asd
· Личное сообщение · #8

Thrasher
1-ая секция - ошибка - смещение на диске у тебя равно 2000.
последняя секция - ошибка RVA должно быть равно RVA предыдущей секции + её VirtualSize



Ранг: 284.8 (наставник), 6thx
Активность: 0.150
Статус: Участник

Создано: 06 июня 2008 11:14
· Личное сообщение · #9

Thrasher

VA section ".new" = VA section ".rsrc" + VS sections ".rsrc" = C0000 + 1C000 = DC000

а у тебя там DD000. больше ошибок нет.

P.S. Как то писал такую прожку, если скажем к калькулятору привлеить секцию и не занулить дебаг директорию, то он начинает ругаться



Ранг: 16.9 (новичок)
Активность: 0.010
Статус: Участник

Создано: 06 июня 2008 11:31
· Личное сообщение · #10

Спасибо всем. Разобрался. Ошибка была в значениях RVA. Неверно вычислял. Тему закрываю


 eXeL@B —› Программирование —› Добавить новую секцию
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати