MSI Lab - Форум по русификации

Программы для локализации => HEX редакторы, Дизассемблер => Тема начата: Nexus от 09 Июня 2011, 04:05:00

Название: Решена проблема с новыми версиями Winhex
Отправлено: Nexus от 09 Июня 2011, 04:05:00
Всем известно, что в новых версиях нельзя вводить кириллицу так как получается белиберда. И вот, немного подучив Ассемблер решил проблему:
Открываете Winhex.exe в том же Winhex и ищете строчку DispatchMessageA и меняете ее на DispatchMessageW - все! Это касается всех версий. Работает на Windows XP и 7.
Что касается крякозяблей в меню и диалогах, то там в командах MOV SI ,4E3 и MOV DX ,4E3 надо поменять 4E3 на 4E4.
Название: Решена проблема с новыми версиями Winhex
Отправлено: shkiper от 09 Июня 2011, 09:39:46
Nexus, спасибо. Думаю, многим пригодится в будущем. Переместил тему в подходящий раздел.
Название: Решена проблема с новыми версиями Winhex
Отправлено: Nexus от 09 Июня 2011, 17:38:51
Извиняюсь, ошибка -  в командах MOV SI ,4E4 и MOV DX ,4E4 надо поменять 4E4 на 4E3, то есть через Winhex ищите выражение 66 BE E4 04 и меняете на соответственно 66 BE E3 04 (это в команде MOV SI ,4E4 меняется кодовая страница 1252 на нашу кириллицу 1251 ), также меняете выражение 66 BA E4 04 на 66 BA E3 04 (это MOV DX ,4E4). Правда команд MOV SI ,4E4 в файле несколько, но только одна (самая первая) нужная.
Название: Решена проблема с новыми версиями Winhex
Отправлено: Solenij от 09 Июня 2011, 21:29:03
Цитата: Nexus
Извиняюсь, ошибка -  в командах MOV SI ,4E4 и MOV DX ,4E4 надо поменять 4E4 на 4E3, то есть через Winhex ищите выражение 66 BE E4 04 и меняете на соответственно 66 BE E3 04 (это в команде MOV SI ,4E4 меняется кодовая страница 1252 на нашу кириллицу 1251 ), также меняете выражение 66 BA E4 04 на 66 BA E3 04 (это MOV DX ,4E4). Правда команд MOV SI ,4E4 в файле несколько, но только одна (самая первая) нужная.
Nexus, спасибо, очень ценная информация.  
Можно поинтересоваться, как нашли код, который надо патчить?
Название: Решена проблема с новыми версиями Winhex
Отправлено: Nexus от 09 Июня 2011, 23:29:35
Цитировать
как нашли код
Ну...Как-то само оно вышло.  . Мне нужно  было вбить русский текст в один игровой архив, но всем известное западло с прогой побудило меня поковыряться в ней. Естесно нахрапом решить проблемку не удалось. Пришлось скачивать Olly Dbg. Ассемблер я знаю на уровне компа ZX Spectrum, а уж о функциях API  и говорить нечего      .Но ничего! Немного почитав об API и насмотревшись роликов Соленого об Olly Dbg я нашел подпрограмму обработки клавиш(через трассировку) и сравнив с 11 версией увидел, что в DispatchMessageA посылаются разные данные. Как-то само в голову пришло поменять A на W. Ну а с крякозябрями проще было - понял, что где-то в проге идет проверка кодовой страницы и давай вбивать вместо E4 04 комбинацию E3 04 - на какой-то раз получилось. Там чуть далее идет проверка польской(восточноевропейской) кодировки. Но после замены строки, в разных местах меню появилось "ЧЧЧЧЧЧ". Пришлось искать дальше - нашел этим же методом строку MOV DX ,4E4. Короче, ничего сложного.