Автор Тема: Поиск ресурсов программы  (Прочитано 9957 раз)

Оффлайн Serj777

  • Новичок
  • *
  • Сообщений: 43
    • http://
Поиск ресурсов программы
« : 04 Декабря 2015, 03:20:16 »
Добрый день.

Если не в ту ветку написал, прошу извинить и перенести тему.

Перевожу программку для управлением контроллера станка. Программка старенькая, но и контролер не дорогой. Вообще программа изначально на китайском с переводом на английский. При работе иногда проскакивает китайский, причем в некоторых полях скорее всего не та кодировка или в системе нет шрифта и отображение происходит в большинстве знаками вопросов.

Перевожу в SDL Passolo 2015, мелочь правлю в Restorator 2007.
Результат на скрине. Пробовал искать то что вылезает на английском с помощью Hex Editor. Не получилось.

Плиз подскажите как правильно и чем искать эти строки?
Программка маленькая. Текущей перевод скачать можно тут https://cloud.mail.ru/public/ATYp/BFcXmbopu
Почему то русский человек должен уметь почти все!

Оффлайн Metabolic

  • Новичок
  • *
  • Сообщений: 42
    • http://
Поиск ресурсов программы
« Ответ #1 : 07 Декабря 2015, 02:44:57 »
Цитировать
Плиз подскажите как правильно и чем искать эти строки?
Текст который отображен на скрине находится в файле "Ncui.dll" по смещению: 0x000360fc; 0x000002f1.
Как найти текст:
Откройте файл в hex редакторе и перейдите по указанному смещению или выполните поиск (например) строки &Start F9.
Выполните поиск слова с кодировке ASCII: «Start».
Также можно найти всю строку, для этого введите между словом &Start  и клавишей F9 знак TAB  (hex: 26 53 74 61 72 74 09 46 39)

Если будет необходимость удлинить какие-то строки, там думаю уже сами разберетесь, либо перевести вручную, например с помощью отладчика или воспользоваться Radialix+IDA.
« Последнее редактирование: 07 Декабря 2015, 16:02:16 от shkiper »

Оффлайн Serj777

  • Новичок
  • *
  • Сообщений: 43
    • http://
Поиск ресурсов программы
« Ответ #2 : 07 Декабря 2015, 23:12:22 »
Цитата: Metabolic
Текст который отображен на скрине находится в файле "Ncui.dll" по смещению: 0x000360fc; 0x000002f1.
Как найти текст:
Откройте файл в hex редакторе и перейдите по указанному смещению или выполните поиск (например) строки &Start F9.
Выполните поиск слова с кодировке ASCII: «Start».
Также можно найти всю строку, для этого введите между словом &Start  и клавишей F9 знак TAB  (hex: 26 53 74 61 72 74 09 46 39)

Если будет необходимость удлинить какие-то строки, там думаю уже сами разберетесь, либо перевести вручную, например с помощью отладчика или воспользоваться Radialix+IDA.
Спасибо
Почему то русский человек должен уметь почти все!

Оффлайн Serj777

  • Новичок
  • *
  • Сообщений: 43
    • http://
Поиск ресурсов программы
« Ответ #3 : 20 Декабря 2015, 04:51:29 »
Цитата: Metabolic
Если будет необходимость удлинить какие-то строки, там думаю уже сами разберетесь, либо перевести вручную, например с помощью отладчика или воспользоваться Radialix+IDA.

Странно, но Ogregui не может найти эти строки
Почему то русский человек должен уметь почти все!

Оффлайн leserg73

  • Постоялец
  • ***
  • Сообщений: 105
    • Wylek.ru
Поиск ресурсов программы
« Ответ #4 : 20 Декабря 2015, 11:27:31 »
Цитировать
Странно, но Ogregui не может найти эти строки
Попробуйте еще раз при следующих настройках опций сканирования:



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


Оффлайн Serj777

  • Новичок
  • *
  • Сообщений: 43
    • http://
Поиск ресурсов программы
« Ответ #5 : 22 Декабря 2015, 00:31:33 »
Цитата: leserg73
Попробуйте еще раз при следующих настройках опций сканирования:
Спасибо.

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

PS Пробовал ставить Radialix3+IDA6.8 по отдельности и портативную версию. В IDA6.8 создал файл rdmap, а в Radialix3 при открытии файла локализации при установке галочки на в настройках жестко закодированных строк и выбирая файл .rdmap, нельзя продолжить, гаснет кнопка OK. Может кто знает что можно сделать.
PSS Ах да, там еще одна запара. В файлах с переводом два языка, английский и китайский. Так вот китайский в программе отображается криво. Если в хексе сменить кодовую страницу на 950, то тогда видны иероглифы, но русский пропадает.
« Последнее редактирование: 22 Декабря 2015, 00:36:20 от Serj777 »
Почему то русский человек должен уметь почти все!

Оффлайн mishem

  • Пользователь
  • **
  • Сообщений: 84
    • http://
Поиск ресурсов программы
« Ответ #6 : 22 Декабря 2015, 10:08:03 »
Цитировать
Пробовал ставить Radialix3+IDA6.8
Последняя версия с которой работает Radialix, по моему 5.5

Оффлайн Serj777

  • Новичок
  • *
  • Сообщений: 43
    • http://
Поиск ресурсов программы
« Ответ #7 : 22 Декабря 2015, 22:30:17 »
Цитата: mishem
Последняя версия с которой работает Radialix, по моему 5.5
А пишут от 5й и старше.
Почему то русский человек должен уметь почти все!

Оффлайн Serj777

  • Новичок
  • *
  • Сообщений: 43
    • http://
Поиск ресурсов программы
« Ответ #8 : 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

  • Новичок
  • *
  • Сообщений: 42
    • http://
Поиск ресурсов программы
« Ответ #9 : 04 Января 2016, 21:50:04 »
Цитата: Serj777
При первом запуске почти все нормально. Ошибки в некоторых(не везде) местах, выводятся подрезанные левые строки. При повторном запуске программы в некоторых окнах выводятся иероглифы(не везде) и переведенные строки возвращаются(не везде) в не переведенное состояние. При этом количество выводимых подрезанных левых строк увеличивается(не везде). Могу скинуть скрины.
Чтоб разобраться, нужно определить суть проблемы, выкладывайте скрины и желательно проект перевода (Ncui.dll + Ncui.rdmap + Ncui.rdlp).
Radialix в связке с IDA не является универсальным инструментом для удлинения жестко-закодированных строк программы и рассчитан на опытных пользователей.
Перевод ~HARDCODED текстовых строк в некоторых случаях имеет ограничение по количеству символов, (нужно быть внимательным) есть множество нюансов!

Оффлайн Serj777

  • Новичок
  • *
  • Сообщений: 43
    • http://
Поиск ресурсов программы
« Ответ #10 : 05 Января 2016, 23:36:26 »
Цитата: Metabolic
Чтоб разобраться, нужно определить суть проблемы, выкладывайте скрины и желательно проект перевода (Ncui.dll + Ncui.rdmap + Ncui.rdlp).

Файлы можно скачать тут: https://cloud.mail.ru/public/CtZ1/JfR9DwKBs

Запуск без перевода ЖЗС(тут без глюков)


Первый запуск с переведенными ЖЗС. Глюки с выводом сообщений.


Повторный запуск. Глюки остались + глюк с кодировкой.


Правильно ли я понимаю что в самой IDA можно без Radialix выполнить перевод и скомпилировать(сохранить) измененный файл. Если да, то как это можно сделать?

Еще нашел видео с правкой глюков IDA после создания файла rdmap.
https://youtu.be/DEKj3T_NHSM
Не успел попробовать, но думаю может помочь.
Почему то русский человек должен уметь почти все!

Оффлайн Metabolic

  • Новичок
  • *
  • Сообщений: 42
    • http://
Поиск ресурсов программы
« Ответ #11 : 06 Января 2016, 02:53:33 »
Локализуемый файл Ncui.dll имеет нестандартное размещение ресурсов, определенная часть текстовых строк которые задействованы в интерфейсе программы находится в заголовке PE (DLL) файла. При создании файла карты в IDA так называемый PE Header не учитывается, соответственно в созданном .rdmap отсутствуют те самые строки...

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

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

« Последнее редактирование: 06 Января 2016, 19:00:10 от shkiper »

Оффлайн Serj777

  • Новичок
  • *
  • Сообщений: 43
    • http://
Поиск ресурсов программы
« Ответ #12 : 06 Января 2016, 03:10:42 »
Цитата: Metabolic
Остается одно, переводить все жестко закодированные строки вручную с помощью отладчика!  
Где почитать про отладчик для этих целей?
Почему то русский человек должен уметь почти все!

Оффлайн Metabolic

  • Новичок
  • *
  • Сообщений: 42
    • http://
Поиск ресурсов программы
« Ответ #13 : 06 Января 2016, 21:21:48 »
Цитата: Serj777
Где почитать про отладчик для этих целей?
Можете ознакомиться со следующим материалом: "Удлинение строки в OllyDbg"

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