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

Программы для локализации => Шаблонные редакторы => Тема начата: Serj777 от 04 Декабря 2015, 03:20:16

Название: Поиск ресурсов программы
Отправлено: 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)
Название: Поиск ресурсов программы
Отправлено: Metabolic от 07 Декабря 2015, 02:44:57
Цитировать
Плиз подскажите как правильно и чем искать эти строки?
Текст который отображен на скрине находится в файле "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.
Название: Поиск ресурсов программы
Отправлено: Serj777 от 07 Декабря 2015, 23:12:22
Цитата: Metabolic
Текст который отображен на скрине находится в файле "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.
Спасибо
Название: Поиск ресурсов программы
Отправлено: Serj777 от 20 Декабря 2015, 04:51:29
Цитата: Metabolic
Если будет необходимость удлинить какие-то строки, там думаю уже сами разберетесь, либо перевести вручную, например с помощью отладчика или воспользоваться Radialix+IDA.

Странно, но Ogregui не может найти эти строки
Название: Поиск ресурсов программы
Отправлено: leserg73 от 20 Декабря 2015, 11:27:31
Цитировать
Странно, но Ogregui не может найти эти строки
Попробуйте еще раз при следующих настройках опций сканирования:

(http://savepic.org/8062367.png)

Тогда необходимые строки будут найдены:

(http://savepic.org/8067487.png)
Название: Поиск ресурсов программы
Отправлено: Serj777 от 22 Декабря 2015, 00:31:33
Цитата: leserg73
Попробуйте еще раз при следующих настройках опций сканирования:
Спасибо.

Ogregui почти все видит. То что не видит, можно поправить хексом.
У данных файлов Ogregui не может изменить длину строки. Я так понимаю что и остальной софт не поможет.

PS Пробовал ставить Radialix3+IDA6.8 по отдельности и портативную версию. В IDA6.8 создал файл rdmap, а в Radialix3 при открытии файла локализации при установке галочки на в настройках жестко закодированных строк и выбирая файл .rdmap, нельзя продолжить, гаснет кнопка OK. Может кто знает что можно сделать.
PSS Ах да, там еще одна запара. В файлах с переводом два языка, английский и китайский. Так вот китайский в программе отображается криво. Если в хексе сменить кодовую страницу на 950, то тогда видны иероглифы, но русский пропадает.
Название: Поиск ресурсов программы
Отправлено: mishem от 22 Декабря 2015, 10:08:03
Цитировать
Пробовал ставить Radialix3+IDA6.8
Последняя версия с которой работает Radialix, по моему 5.5
Название: Поиск ресурсов программы
Отправлено: Serj777 от 22 Декабря 2015, 22:30:17
Цитата: mishem
Последняя версия с которой работает Radialix, по моему 5.5
А пишут от 5й и старше.
Название: Поиск ресурсов программы
Отправлено: Serj777 от 04 Января 2016, 02:00:48
Цитата: Metabolic
Если будет необходимость удлинить какие-то строки, там думаю уже сами разберетесь, либо перевести вручную, например с помощью отладчика или воспользоваться 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).
Название: Поиск ресурсов программы
Отправлено: Metabolic от 04 Января 2016, 21:50:04
Цитата: Serj777
При первом запуске почти все нормально. Ошибки в некоторых(не везде) местах, выводятся подрезанные левые строки. При повторном запуске программы в некоторых окнах выводятся иероглифы(не везде) и переведенные строки возвращаются(не везде) в не переведенное состояние. При этом количество выводимых подрезанных левых строк увеличивается(не везде). Могу скинуть скрины.
Чтоб разобраться, нужно определить суть проблемы, выкладывайте скрины и желательно проект перевода (Ncui.dll + Ncui.rdmap + Ncui.rdlp).
Radialix в связке с IDA не является универсальным инструментом для удлинения жестко-закодированных строк программы и рассчитан на опытных пользователей.
Перевод ~HARDCODED текстовых строк в некоторых случаях имеет ограничение по количеству символов, (нужно быть внимательным) есть множество нюансов!
Название: Поиск ресурсов программы
Отправлено: Serj777 от 05 Января 2016, 23:36:26
Цитата: Metabolic
Чтоб разобраться, нужно определить суть проблемы, выкладывайте скрины и желательно проект перевода (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)
Не успел попробовать, но думаю может помочь.
Название: Поиск ресурсов программы
Отправлено: Metabolic от 06 Января 2016, 02:53:33
Локализуемый файл Ncui.dll имеет нестандартное размещение ресурсов, определенная часть текстовых строк которые задействованы в интерфейсе программы находится в заголовке PE (DLL) файла. При создании файла карты в IDA так называемый PE Header не учитывается, соответственно в созданном .rdmap отсутствуют те самые строки...

Также замечено, что после добавления Radialix-ом секции .data, происходит смещение интересующего нас блока текста и соответственно сбиваются установленные ссылки на этот текст. В большинстве случаев в заголовке PE файла есть нулевые байты куда можно (прописывать) добавлять новые секции, но  в данном случае имеется нестандартный файл и свободное место отсутствует.

P.S. При переводе жестко закодированных строк Radialix добавляет в конец файла секцию .data в которую он записывает удлиненный переведенный текст и перенаправляет на него ссылки.

Название: Поиск ресурсов программы
Отправлено: Serj777 от 06 Января 2016, 03:10:42
Цитата: Metabolic
Остается одно, переводить все жестко закодированные строки вручную с помощью отладчика!  
Где почитать про отладчик для этих целей?
Название: Поиск ресурсов программы
Отправлено: Metabolic от 06 Января 2016, 21:21:48
Цитата: Serj777
Где почитать про отладчик для этих целей?
Можете ознакомиться со следующим материалом: "Удлинение строки в OllyDbg" (http://blackstar.clanbb.ru/viewtopic.php?id=597)

Еще можно сделать комбинированный перевода в несколько этапов с помощью Radialix и отладчика OllyDbg (но для этого необходимо выполнить определенные манипуляции).
- Пропатчить dll (подготовить нулевые байты для секции .data) -> перевести необходимые строки в Radialix+IDA -> затем еще раз пропатчить dll -> и перевести в отладчике строки которые остались не переведенные (строки в PE Header).