![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() |
Siberian GRemlin |
![]() ![]()
Сообщение
#1
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 222 раз(а) ![]() |
Уважаемые.
Добрался я до той ситуации, когда необходимо изменить длину строк в EXE, в частности под DOS. Как я понимаю, в бинарнике есть таблица с адресами и если мне нужно изменить длину первой строки (считаем от начала бинарника) на один символ (байт), то необходимо в таблице увеличить все значения адресов на единицу, кроме самого первого адреса (в смысле, адреса первой строки). Единственное, что мне пока неизвестно, где находится эта таблица в бинарнике и как там идёт индексация, а также адресация и есть ли где-то значение размера этой таблицы? Ещё в интернете ища информацию, натыкался на информацию о том, что существует прога для автоматического изменения текста с его длинной, ремаппингом и т.п., а также что люди сами писали подобные программы. Гипотетически это возможно, но как бы это выяснить... Может кто-от посоветует какие-нибудь статьи по данному вопросу (локализации текстовых констант в ЕХЕ) P.S.: Опытного человека, моё сообщение может показаться ламерским бредом... но хочется расти в творческом плане и в одиночку без глупых вопросов не обойтись. P.P.S.: Я доделываю русскую локализацию одной игры. |
![]() ![]() |
Siberian GRemlin |
![]()
Сообщение
#2
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 222 раз(а) ![]() |
Я тут колупался. В итоге удалось изменить длины строк, по указанному тобой способу, но не все. например, я изменил длины строк:
"Amazing!" "The effects of the poison are gone!" "It's a jewel, but why is it black?" и других из того куска кода. Но во втором куске кода, где лежат 4 строчки, которые мне надо изменить: "The poison..." "I can't breathe..." "I don't feel so good..." "That snake must be poisonous!" Делаю как в предыдущем блоке, т.е. как ты писал, но игре вообще пофиг на это. Я ещё случайно столкнулся с проблемой (точнее не с проблемой а так) - ну случайно по глупостью, когда ошибся смещением на 1 и вместо адреса сменил байт $68, т.е. команду push и после этого игра при попытки загрузить игру выдавала ошибку, что мол сохранёнка от другой игры, я свою оплошность ясень пень исправил... суть в том, что даже если поменять все байты в окрестности адреса до начала строчки "I don't feel so good...", то и даже так игре всё пофигу, она нормально загружает сохранёнки и отображает строки начиная с того адреса, как и было в оригинале. Где собака зарыта? Может есть подводные камни? P.S.: Я решил методом тыка перебрать где это может быть и нашёл все места где встречается $680F т.е. адрес до строчки "I can't breathe...", его я взял из того места где push, т.е. байты $68680F, изменение которых ни к чему не приводит. Но перебирать 30 мест в файле очень геморойно =( |
![]() ![]() |
Упрощённая версия | Сейчас: 9th May 2025 - 23:45 |