PE - расширение последней секции файла
Суть вопроса такова — как расширить секцию exe-файла? Занимаюсь взломом игры с целью перевода оной на русский. Нужно расширить таблицы символов с 95 до 255 символов. Места под них нет. Решил перенести в конец секции (.data). За ней шла еще одна — .rsrc, содержащая иконку. Снес, ибо не иконками едиными живы. Пытаюсь выправить заголовок — руками не получилось — система матерится. Взялся ковырять PE Explorer'ом — увеличиваю Raw Data Size на 0х2000, Virtual Size на столько же, в конец файла забиваю соответствующее количество нолей. Сохраняю изменения, правлю общий размер образа (Image Size) — все здорово, PE Explorer верно позиционируется на начало\конец секции. Запускаю экзешник из-под дебагера и что я вижу: на то место, которое я отвел для своих табличек, кто-то нагло пишет свои данные!
Я новичок, столкнувшийся с дебагерами, дампами, виртуальной памятью, ассемблером впервые и задачи изучить их "здесь и сейчас" перед собой не ставлю (но в ближайшем будущем — всенепременно), посему интересуюсь — за счет чего происходит такое безобразие, и как от него избавиться? Как корректно расширить секцию файла под свои данные и заставить exe'шник это увидеть и писать\распаковывать свое содержимое за пределами этой секции (или в ней, но чтобы я мог где-нибудь разместиться и меня не перезатерли).
А что за игра-то?
После секции данных обычно идет секция неинициализированных данных, которая также описана в файле, но не содержит данных, сохраняемых в файле. Вручную ее сместить нельзя (чтобы расширить секцию данных), т.к. все относящиеся к ней адреса зашиты в коде (их может оказаться слишком много). Раз есть возможность перемещать таблицу в пределах секции данных, то можно попробовать создать отдельную несмежную секцию данных специально для таблицы.
К сожалению, отладчиком я вчера воспользовался впервые в жизни и "бряки" еще ставить не научился. :) Так что интересовала не столько причина, сколько решение - умом то я понимал, что если virtual size больше физического размера в 100 раз - значит он будет разворачиваться в памяти. А единственное приходящее на ум решение у меня сводилось к "забить 2мб нолями" что не есть гуд.
За попытку помочь спасибо! :)
Что до игры - старенькая Battle of the Youstrass. Я тут, на форуме, с год назад начал ее ломать. С тех пор разобрал ресурсы по винтикам и вот теперь взялся потрошить exe'шник. Опять же перевод уже готов на 80%. Так что скоро выложу плоды своих издевательств. Узнал много нового и интересного в процессе взлома! Всем рекоменду.
---
Исправлено: 4 человека. :D Phantom-84, также спасибо за, видимо, самое верное решение данной проблемы!
странно, т.к. pe explorer должен был предусмотреть и проверить bss секцию. но может оно и так
Цитата: Phodopus
странно, т.к. pe explorer должен был предусмотреть и проверить bss секцию. но может оно и так
А там нет .bss. Есть толкьо .text, .rdata, .data и .rsrc
Кстати, существуют ли удобные софтинки для работы с секциями файла? PE Explorer очень порадовал, но он не умеет (или скрывает, что умеет) создавать новые секции. Так что я превратил идущую в конце секцию ресурсов в еще одну .data с именем .rus. Можно, конечно, и в WinHEX поправить, но хочется немножко полениться. :D
PE tools же
Благодарю! :)