Посл.ответ |
Сообщение |
Ранг: 16.9 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 06 июня 2008 09:21 · Личное сообщение · #1
Вобщем какая проблема. Добавляю секцию. Все вроде бы правильно делаю, выравнивания соблюдены. Но если я добавляю секцию в экзешник скомпиленый в Delphi или MASM, то все нормально... Но как только я добавляю секцию в экзешник скомпилированный в С++ - прога отказывается запускаться. Вопрос - что меняется при добавлении новой секции, кроме ImageSize, Object Num... Может быть я что-то упустил? Спасибо.
| Сообщение посчитали полезным: |
|
Ранг: 8.2 (гость) Активность: 0.01↘0 Статус: Участник
|
Создано: 06 июня 2008 09:46 · Личное сообщение · #2
Опиши подробней (что именно в PE заголовке правишь), что ты делаешь, т.к. из твоего описания вообще не понятны твои действия, кроме желания добавить секцию.
| Сообщение посчитали полезным: |
Ранг: 162.2 (ветеран) Активность: 0.09↘0 Статус: Участник
|
Создано: 06 июня 2008 09:52 · Личное сообщение · #3
Thrasher
нерабочий файл выложи.
| Сообщение посчитали полезным: |
Ранг: 16.9 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 06 июня 2008 09:53 · Личное сообщение · #4
Правлю ImageSize, Object Number (кол-во секций). Добавляю описание секции - Имя секции, RVA, Physical Offset, Virtual Size, Physycal Size. Больше ничего не трогаю.
| Сообщение посчитали полезным: |
Ранг: 28.1 (посетитель) Активность: 0.01↘0 Статус: Участник
|
Создано: 06 июня 2008 10:14 · Личное сообщение · #5
а сам файл то увеличиваешь на величину Physycal Size, чтоб от смещения Physical Offset было количество
байт указанных в Physycal Size?
Правда сомневаюсь, если этого не сделать, винда не дала бы запустить файл от любого компилятора.
| Сообщение посчитали полезным: |
Ранг: 16.9 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 06 июня 2008 10:16 · Личное сообщение · #6 |
Ранг: 617.3 (!), 677thx Активность: 0.54↘0 Статус: Участник
|
Создано: 06 июня 2008 10:50 · Личное сообщение · #7
Возьми прогу CFF Explorer, добавь ей секцию такого же размера как у тебя и сравни.
| Сообщение посчитали полезным: |
Ранг: 162.2 (ветеран) Активность: 0.09↘0 Статус: Участник
|
Создано: 06 июня 2008 10:50 · Поправил: asd · Личное сообщение · #8
Thrasher
1-ая секция - ошибка - смещение на диске у тебя равно 2000.
последняя секция - ошибка RVA должно быть равно RVA предыдущей секции + её VirtualSize
| Сообщение посчитали полезным: |
Ранг: 284.8 (наставник), 6thx Активность: 0.15↘0 Статус: Участник
|
Создано: 06 июня 2008 11:14 · Личное сообщение · #9
Thrasher
VA section ".new" = VA section ".rsrc" + VS sections ".rsrc" = C0000 + 1C000 = DC000
а у тебя там DD000. больше ошибок нет.
P.S. Как то писал такую прожку, если скажем к калькулятору привлеить секцию и не занулить дебаг директорию, то он начинает ругаться
| Сообщение посчитали полезным: |
Ранг: 16.9 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 06 июня 2008 11:31 · Личное сообщение · #10
Спасибо всем. Разобрался. Ошибка была в значениях RVA. Неверно вычислял. Тему закрываю
| Сообщение посчитали полезным: |