![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() |
Siberian GRemlin |
![]() ![]()
Сообщение
#1
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 222 раз(а) ![]() |
Уважаемые.
Добрался я до той ситуации, когда необходимо изменить длину строк в EXE, в частности под DOS. Как я понимаю, в бинарнике есть таблица с адресами и если мне нужно изменить длину первой строки (считаем от начала бинарника) на один символ (байт), то необходимо в таблице увеличить все значения адресов на единицу, кроме самого первого адреса (в смысле, адреса первой строки). Единственное, что мне пока неизвестно, где находится эта таблица в бинарнике и как там идёт индексация, а также адресация и есть ли где-то значение размера этой таблицы? Ещё в интернете ища информацию, натыкался на информацию о том, что существует прога для автоматического изменения текста с его длинной, ремаппингом и т.п., а также что люди сами писали подобные программы. Гипотетически это возможно, но как бы это выяснить... Может кто-от посоветует какие-нибудь статьи по данному вопросу (локализации текстовых констант в ЕХЕ) P.S.: Опытного человека, моё сообщение может показаться ламерским бредом... но хочется расти в творческом плане и в одиночку без глупых вопросов не обойтись. P.P.S.: Я доделываю русскую локализацию одной игры. |
![]() ![]() |
-=CHE@TER=- |
![]()
Сообщение
#2
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,373 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 320 раз(а) ![]() |
А можно определение Overlay'я? Если с английским хорошо - вот тут есть описание/определение оверлея. Ещё могу такую цитату привести:![]() QUOTE Блоки модуля Overlay понадобятся при разработке громоздких программ с перекрытиями (позволяет хранить в памяти только нужные части программы, а не требующиеся на данный момент удалять из памяти, сохраняя на диск, либо возвращать в память при необходимости). Короче, это, по сути, кусок программы, который загружается в память, ему передаётся управление, он отрабатывает свою часть и, затем, завершает работу и выгружается из памяти (я так понимаю, это предтеча .DLL). В DOS это позволяет сильно съэкономить память, т.к. у тебя не вся программа в оперативке одновременно находится, а только её части. Насколько мне известно, в Windows оверлеи не применяются вообще (там даже такого механизма нет). Обычно оверлеи валяются в каталоге программы с расширением .OVR, но могу быть приделаны в хвост главного .EXE файла.Где собака зарыта? Может есть подводные камни? Не забывай, что ты изменяешь адрес начала строки. Строка, в свою очередь, кончается символом $00 на конце (ASCIIZ-строки). Т.е. длина строки считается как количество байт с адреса начала, до первого символа $00. Длина строки нигде не должа задаваться явно (если только где-нибудь временный буфер для пересылки жёстко не ограничен каким-нибудь значением). |
![]() ![]() |
Упрощённая версия | Сейчас: 10th May 2025 - 00:24 |