MSI Lab - Форум по русификации
Программы для локализации => Шаблонные редакторы => Тема начата: Serj777 от 04 Декабря 2015, 03:20:16
-
Добрый день.
Если не в ту ветку написал, прошу извинить и перенести тему.
Перевожу программку для управлением контроллера станка. Программка старенькая, но и контролер не дорогой. Вообще программа изначально на китайском с переводом на английский. При работе иногда проскакивает китайский, причем в некоторых полях скорее всего не та кодировка или в системе нет шрифта и отображение происходит в большинстве знаками вопросов.
(http://s017.radikal.ru/i413/1512/30/523425eecc5et.jpg) (http://radikal.ru/fp/7287fdc70c154e21bf2e71aedb7b128c)
Перевожу в SDL Passolo 2015, мелочь правлю в Restorator 2007.
Результат на скрине. Пробовал искать то что вылезает на английском с помощью Hex Editor. Не получилось.
Плиз подскажите как правильно и чем искать эти строки?
Программка маленькая. Текущей перевод скачать можно тут https://cloud.mail.ru/public/ATYp/BFcXmbopu (https://cloud.mail.ru/public/ATYp/BFcXmbopu)
-
Плиз подскажите как правильно и чем искать эти строки?
Текст который отображен на скрине находится в файле "Ncui.dll" по смещению: 0x000360fc; 0x000002f1.
Как найти текст:
Откройте файл в hex редакторе и перейдите по указанному смещению или выполните поиск (например) строки &Start F9.
Выполните поиск слова с кодировке ASCII: «Start».
Также можно найти всю строку, для этого введите между словом &Start и клавишей F9 знак TAB (http://ascii.cl/) (hex: 26 53 74 61 72 74 09 46 39)
Если будет необходимость удлинить какие-то строки, там думаю уже сами разберетесь, либо перевести вручную, например с помощью отладчика или воспользоваться Radialix+IDA.
-
Текст который отображен на скрине находится в файле "Ncui.dll" по смещению: 0x000360fc; 0x000002f1.
Как найти текст:
Откройте файл в hex редакторе и перейдите по указанному смещению или выполните поиск (например) строки &Start F9.
Выполните поиск слова с кодировке ASCII: «Start».
Также можно найти всю строку, для этого введите между словом &Start и клавишей F9 знак TAB (http://ascii.cl/) (hex: 26 53 74 61 72 74 09 46 39)
Если будет необходимость удлинить какие-то строки, там думаю уже сами разберетесь, либо перевести вручную, например с помощью отладчика или воспользоваться Radialix+IDA.
Спасибо
-
Если будет необходимость удлинить какие-то строки, там думаю уже сами разберетесь, либо перевести вручную, например с помощью отладчика или воспользоваться Radialix+IDA.
Странно, но Ogregui не может найти эти строки
-
Странно, но Ogregui не может найти эти строки
Попробуйте еще раз при следующих настройках опций сканирования:
(http://savepic.org/8062367.png)
Тогда необходимые строки будут найдены:
(http://savepic.org/8067487.png)
-
Попробуйте еще раз при следующих настройках опций сканирования:
Спасибо.
Ogregui почти все видит. То что не видит, можно поправить хексом.
У данных файлов Ogregui не может изменить длину строки. Я так понимаю что и остальной софт не поможет.
PS Пробовал ставить Radialix3+IDA6.8 по отдельности и портативную версию. В IDA6.8 создал файл rdmap, а в Radialix3 при открытии файла локализации при установке галочки на в настройках жестко закодированных строк и выбирая файл .rdmap, нельзя продолжить, гаснет кнопка OK. Может кто знает что можно сделать.
PSS Ах да, там еще одна запара. В файлах с переводом два языка, английский и китайский. Так вот китайский в программе отображается криво. Если в хексе сменить кодовую страницу на 950, то тогда видны иероглифы, но русский пропадает.
-
Пробовал ставить Radialix3+IDA6.8
Последняя версия с которой работает Radialix, по моему 5.5
-
Последняя версия с которой работает Radialix, по моему 5.5
А пишут от 5й и старше.
-
Если будет необходимость удлинить какие-то строки, там думаю уже сами разберетесь, либо перевести вручную, например с помощью отладчика или воспользоваться Radialix+IDA.
Возникла необходимость удлинить строки. Нашел комплект Radialix+IDA в котором по роликам с Ютуб смог открыть для правки эти ресурсы. Ресурсы действительно удлиняются.
Но вылезла другая проблема. При первом запуске почти все нормально. Ошибки в некоторых(не везде) местах, выводятся подрезанные левые строки. При повторном запуске программы в некоторых окнах выводятся иероглифы(не везде) и переведенные строки возвращаются(не везде) в не переведенное состояние. При этом количество выводимых подрезанных левых строк увеличивается(не везде). Могу скинуть скрины.
Что я делаю не так?
PS В IDA создаю файл Ncui.rdmap. В Radialix открываю Ncui.dll, указываю где лежит Ncui.rdmap и в "Локализованные файлы" указываю Локализованный файл. После правки жму CTRL+F9(создать лок. файл) и получаю Ncui_RUS.dll. Переименовываю его в Ncui.dll и закидываю в папку с программой.
PSS Ncui.dll можно распаковать с помощью 7-Zip. В корне распакованного архива лежат файлы ".data" и ".rdata", в них необходимые ресурсы. Может правильнее как то отредактировать эти файлы и заменить их в архиве!? Нахрапом этого сделать не смог. Еще заметил что кодировки уже переведенных файлов(меню, диалоги), которые нормально отображаются, в "Translation", 0x419, 1200 (UTF-16 LE).
-
При первом запуске почти все нормально. Ошибки в некоторых(не везде) местах, выводятся подрезанные левые строки. При повторном запуске программы в некоторых окнах выводятся иероглифы(не везде) и переведенные строки возвращаются(не везде) в не переведенное состояние. При этом количество выводимых подрезанных левых строк увеличивается(не везде). Могу скинуть скрины.
Чтоб разобраться, нужно определить суть проблемы, выкладывайте скрины и желательно проект перевода (Ncui.dll + Ncui.rdmap + Ncui.rdlp).
Radialix в связке с IDA не является универсальным инструментом для удлинения жестко-закодированных строк программы и рассчитан на опытных пользователей.
Перевод ~HARDCODED текстовых строк в некоторых случаях имеет ограничение по количеству символов, (нужно быть внимательным) есть множество нюансов!
-
Чтоб разобраться, нужно определить суть проблемы, выкладывайте скрины и желательно проект перевода (Ncui.dll + Ncui.rdmap + Ncui.rdlp).
Файлы можно скачать тут: https://cloud.mail.ru/public/CtZ1/JfR9DwKBs (https://cloud.mail.ru/public/CtZ1/JfR9DwKBs)
Запуск без перевода ЖЗС(тут без глюков)
(http://i004.radikal.ru/1601/c1/37b1e98b62fbt.jpg) (http://radikal.ru/fp/19ad502676354661b009934d536aeb59)
Первый запуск с переведенными ЖЗС. Глюки с выводом сообщений.
(http://i003.radikal.ru/1601/d6/67f55128027at.jpg) (http://radikal.ru/fp/7308c4033e584447af7b6ccbcfc3c25f)
Повторный запуск. Глюки остались + глюк с кодировкой.
(http://s019.radikal.ru/i640/1601/6d/d880bf343872t.jpg) (http://radikal.ru/fp/9904356ea41e457686fe19ecd59b97de)
Правильно ли я понимаю что в самой IDA можно без Radialix выполнить перевод и скомпилировать(сохранить) измененный файл. Если да, то как это можно сделать?
Еще нашел видео с правкой глюков IDA после создания файла rdmap.
https://youtu.be/DEKj3T_NHSM (https://youtu.be/DEKj3T_NHSM)
Не успел попробовать, но думаю может помочь.
-
Локализуемый файл Ncui.dll имеет нестандартное размещение ресурсов, определенная часть текстовых строк которые задействованы в интерфейсе программы находится в заголовке PE (DLL) файла. При создании файла карты в IDA так называемый PE Header не учитывается, соответственно в созданном .rdmap отсутствуют те самые строки...
Также замечено, что после добавления Radialix-ом секции .data, происходит смещение интересующего нас блока текста и соответственно сбиваются установленные ссылки на этот текст. В большинстве случаев в заголовке PE файла есть нулевые байты куда можно (прописывать) добавлять новые секции, но в данном случае имеется нестандартный файл и свободное место отсутствует.
P.S. При переводе жестко закодированных строк Radialix добавляет в конец файла секцию .data в которую он записывает удлиненный переведенный текст и перенаправляет на него ссылки.
-
Остается одно, переводить все жестко закодированные строки вручную с помощью отладчика!
Где почитать про отладчик для этих целей?
-
Где почитать про отладчик для этих целей?
Можете ознакомиться со следующим материалом: "Удлинение строки в OllyDbg" (http://blackstar.clanbb.ru/viewtopic.php?id=597)
Еще можно сделать комбинированный перевода в несколько этапов с помощью Radialix и отладчика OllyDbg (но для этого необходимо выполнить определенные манипуляции).
- Пропатчить dll (подготовить нулевые байты для секции .data) -> перевести необходимые строки в Radialix+IDA -> затем еще раз пропатчить dll -> и перевести в отладчике строки которые остались не переведенные (строки в PE Header).