![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() |
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 раз(а) ![]() |
![]() Вот смотри, возьмём строчку "The poison..." её легко найти. Справа есть стрелочка, как я понял, ведущая туда где ?первый? раз обращаемся к ней. Как видно в подсказке, там как раз изврат, но думаю ты сам туда перейдёшь и посмотришь. Вот как там менять адрес, указывающий на начало строки? В большинстве же случаев всё гораздо проще, как чуть ниже на снимке, например строчки как "The flask is now filled.....", там смотрим и видим просто указатель на эту строку, который и меняем на новый, после изменения длин строк. P.S.: Ещё меня очень сильно угнетает, что в Hex View-A (16ричный режим просмотра) слева вместо стандартного смещения, какая-то хрень, типа dseg:####, ovr###:#### и т.п. Можно сделать отображение смещений привычное глазу моему? =) P.P.S.: Я завершил изменение размеров менюшек - всё вообще красиво теперь смотрится! 8 ) Никогда не думал, что я до такого дойду, но очень мечтал! Ура! =) P.P.P.S: Есть ещё одна задачка - выставить показ текста в CD версии по умолчанию как в Floppy версии, а то получается, что вступление без вывода текста... Придётся пинать одного хакера знакомого, который всегда занятой. |
-=CHE@TER=- |
![]()
Сообщение
#3
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,373 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 320 раз(а) ![]() |
Так, у тебя какая версия IDA? У меня IDA Pro Adv 4.8.0.847 и у меня эти строчки вообще как данные - т.е. там даже ссылок на их начало нет. Юзал на .EXE файле, который ты мне когда-то присылал, от оригинальной, английской версии. Сейчас ещё попробую IDA новую достать...
А "DATA HREF" - это тебе IDA подсказывает с какого места на эту константу ссылаются. Наведи курсор или щёлкни мышкой по "aThePoison___" и нажми X - появится список мест кода, где идёт ссылка на эту строку. Щёлкаешь два раза по любому - и тут же туда переходишь. Вот там тебе адрес и нужно менять. Насчёт смещений - не знаю. Никогда не требовалось, а если и требовалось, то по коду искал. (*улыбается*) BTW, dseg:#### - это данные (сегмент данных), ovr### - это оверлей (если заметил - странный кусок в хвосте .EXE). |
![]() ![]() |
Упрощённая версия | Сейчас: 9th May 2025 - 22:19 |