Последние сообщения

Страницы: 1 2 3 4 5 6 [7] 8 9 10
61
Общий форум / Re: Создание языкового модуля
« Последний ответ от Krig 06 Июня 2020, 10:48:41 »
Привет!
Вопрос возник в том, что есть ряд программ ресурсы которых находятся в жестко-закодированных строках. И при переводе такого рода программ в последствии выявляется ряд проблем связанные со стабильностью их работы.
В таких случаях не следует переводить все подряд. Обязательно разделяйте ссылки и после их перевода по каждой из них проверяйте работу/функции программы. Если происходит нарушение функциональности — от перевода такой ссылки отказываемся. Других вариантов нет.

Можно ли для таких программ создать отдельный "ЯЗЫКОВЫЙ МОДУЛЬ" с требуемым языком в данном случае русским! И главный вопрос как это делается практически?
Если разработчик не предусмотрел механизмов локализации интерфейса своего ПО, то вы, как пользователь этого ПО, никоим образом не сможете добавить свою локализацию отдельным модулем (исключение - программы Delphi автоматом подхватывают локализованные ресурсы). Вы можете только перевести ресурсы, если они доступны, и/или жесткие строки. Сама поддержка локализации создается на этапе разработки ПО.
62
Общий форум / Создание языкового модуля
« Последний ответ от KonstantinGV 05 Июня 2020, 14:08:54 »
Добрый день друзья.
Вопрос возник в том, что есть ряд программ ресурсы которых находятся в жестко-закодированных строках. И при переводе такого рода программ в последствии выявляется ряд проблем связанные со стабильностью их работы.
Можно ли для таких программ создать отдельный "ЯЗЫКОВЫЙ МОДУЛЬ" с требуемым языком в данном случае русским! И главный вопрос как это делается практически?
Пример такой программы разных версий:

https://mega.nz/file/63pTVTrI#JTDYbAshLTRbd802vuHfM-BE_T5Ko2kz3ykBHxqXaVc

https://mega.nz/folder/7mwHjbjb#HUfEmQsctluLW3sXqhjXCQ


63
RusMe - РусМи! / Re: Удлинение "неудлиняемых" строк
« Последний ответ от миха04 12 Мая 2020, 11:17:07 »
Большое спасибо. Вот таких тонкостей я как раз и не знал. Будет добавка в мою копилку статей. :dance:
64
RusMe - РусМи! / Re: Удлинение "неудлиняемых" строк
« Последний ответ от leserg73 12 Мая 2020, 01:46:05 »
У строк подменю "Paste Special" есть ссылки, только они не прямые, а косвенные (посредством другого адреса/ссылки). Возьмем строку "Insert", Обращение к этой строке выполняется инструкцией вида lea r15, ds:[0x00000001415D1910]. Причем, адрес 00000001415D1910 является ссылочным и указывает не на строку, а на следующий адрес 00000001415CB758, по которому уже находится сама строка "Insert".

Рис. 1


Таким образом, вам нужно сделать перевод данной строки в другом месте, например в новой секции, и изменить в коде только прямой адрес к этой строке, а ссылочный адрес оставить без изменений. Вот как ниже показан пример со строкой "Insert". В новом месте добавлен перевод и скорректирован прямой адрес к этой строке. Ссылочный адрес остался без изменений.

Рис. 2


Обратите внимание, что порядок записи байт адреса обратный (от младшего к старшему). Аналогично нужно поступить и по остальным строкам этого подменю. Как видно из рис.1 (см. панель дампа), все прямые адреса на строки этого подменю находятся в одном месте и следуют друг за другом. Вот эти адреса вам необходимо скорректировать в отладчике с учётом  адресации переведенных строк для подменю.


Касательно пунктов подменю "Rewind", "Play" в меню "Transport". По строке "Rewind" я проблем не увидел, просто для неё исправьте указатель длины в соответствии с длиной переведенной строки. Аналогично для строки "Play", но с небольшим нюансом. Эта строка является динамической. Если обратили внимание, то при включении воспроизведения она изменяется на "Stop" и наоборот. Также, полагаю, вы обратили внимание на то, что длина этих строк, "Play" и "Stop", одинаковая - 5 байт (длина строк 4 байта плюс 1 байт на признак клавиши быстрого доступа (&)).  Из-за этого у них в коде общий указатель длины. Он находится перед блоками кода с выбором установки соответствующих строк. Смотрите участок кода, представленный на рисунке ниже. Сначала командой mov r8d, 0x5 в регистр r8d заносится значение длины строки, а затем выбирается та или иная строка для установки в меню.

Рис. 3


Что делать? Можно немного переделать код так, чтобы для каждой их строк устанавливался указатель длины, соответствующий переведенным строкам. Это не сложно, если разбираетесь в ассемблере. А можно пойти другим путём. Сделать переводы строк одинаковой длины и потом на это значение скорректировать указатель длины. Например, переведем строки следующим образом: "Воспроизвести" и "Остановить". В кодировке UTF-8 длина первой строки - 1Ah байт, а второй - 14h байт. Строку "Остановить" дополняем пробелами до размера 1Ah байт. Вот так: "Остановить      "  (6 пробелов). Затем корректируем в коде значение указателя длины для этих строк.

Рис. 4


Вы можете сделать перевод этих строк в Radialix, а потом в отладчике или НЕХ-редакторе изменить значение длины. Главное сделайте длину строку одинаковой, иначе более короткая строка потеряет клавишу управления (Space). Сохраняете изменения в файле; проверяете в работе.

Рис. 5
65
RusMe - РусМи! / Удлинение "неудлиняемых" строк
« Последний ответ от миха04 10 Мая 2020, 16:19:20 »
Поздравляю всех с Днём Победы! Коварный iZotope RX7 постоянно подкидывает проблемы. В меню Transport строки Rewind, Play, например, не хотят удлиняться ни с помощью IDA, ни переносом на новый адрес в x64dbg. Всё строго ограничено количеством байт, а вот слово Файл уложилось при переносе. Также проблема со строками в подменю Paste Special меню Edit, это Insert и так далее. У них нет ссылок. Вот такая заморочка. Есть ли решение проблемы? Пытался искать по размерам полей, куда вписаны строки, но там просто гигантское число констант выскакивает. Для меня, как человека малосведущего в коде, это просто непонятный набор символов. Файл https://yadi.sk/d/h7umphumB4NN9A
66
RusMe - РусМи! / Re: Извлечение изображений из бинарного файла
« Последний ответ от миха04 10 Мая 2020, 13:44:51 »
Поздравляю всех с Днём Победы! Коварный iZotope RX7 постоянно подкидывает проблемы. В меню Transport строки Rewind, Play, например, не хотят удлиняться ни с помощью IDA, ни переносом на новый адрес в x64dbg. Всё строго ограничено количеством байт, а вот слово Файл уложилось при переносе. Также проблема со строками в подменю Paste Special меню Edit, это Insert и так далее. У них нет ссылок. Вот такая заморочка. Есть ли решение проблемы?
67
Общий форум / Re: Лoкaлизaция Nоdе-WеbKіt
« Последний ответ от SENKO 04 Мая 2020, 21:43:18 »
Bы вeдь пoнимaeтe, чтo нyжeн нe тoлькo фaйл NОDЕ.ЈЅ, нo и вce cкpипты, гдe мoжeт быть тpeбyющaя пepeвoдa cтpoкa. A инoгдa нaдo и кapтинкy c инocтpaнным тeкcтoм пoдпpaвить. Baш бaтник ищeт oпpeдeлённyю cтpoчкy и извлeкaeт нaйдeнныe ЈЅ-фaйлы. Ho вeдь иx тaм гopaздo бoльшe! Kaк вытaщить вcё (вce cкpипты, кapтинки и т.д.)? C cyщecтвyющим бaтникoм, к coжaлeнию, – никaк :( (y мeня ecть cмyтнoe пoдoзpeниe, чтo и пятьдecят фaйлoв – пpocтo нeкoe фикcиpoвaннoe чиcлo, пocлe кoтopoгo цикл пpинyдитeльнo oбpывaeтcя; кaкaя, кcтaти, пpoгpaммa пoкaзывaeт внyтpeнниe имeнa ЈЅ?). Aдpeca вшитыx cкpиптoв нyжны для oтлaдки пoлyчeннoгo peзyльтaтa: пoкa чтo нe знaю, кaк cкpипты фyнкциoниpyют пocлe лoкaлизaции, a кaк иx вызвaть изнyтpи любoй НТМL-cтpaницы – нe вeдaю.
68
RusMe - РусМи! / Re: Извлечение изображений из бинарного файла
« Последний ответ от миха04 04 Мая 2020, 21:00:08 »
В очередной раз спасибо! Благодаря вашим подсказкам выяснил, что проще программу переводить с IDA Pro 5.2, части строк придётся корректировать длину в x64dbg. Помучился, но получил опыт :dance:
69
RusMe - РусМи! / Re: Извлечение изображений из бинарного файла
« Последний ответ от leserg73 04 Мая 2020, 17:11:29 »
Быстро это можно сделать с помощью утилиты Exeinfo PE. Поместите исполняемый файл программы iZotope RX 7 Audio Editor.exe в отдельный каталог, чтобы извлеченные данные не смешались с файлами программы, иначе можно запутаться. Затем загрузите этот файл в Exeinfo PE, нажмите кнопку "Rip" далее в подменю GFX pictures выберите пункт PNG. Начнется процесс извлечения, утилита покажет окошко извлекаемых данных. По окночании не спешите закрывать это окошко, а нажмите кнопку "Clip". Вся информация об извлекаемых данных будет скопирована в буфер обмена. Сохраните её в текстовый документ. Она пригодится вам для быстрого нахождения необходимого изображения в исполняемом файле при помощи НЕХ- редактора и последующей его замены. Этот список содержит данные смещений, по которым найденные изображения находятся в файле. Ориентируйтесь в списке по именам файлов. Смотрите прилагаемые скриншоты.

Также есть множество других утилит, например, Ravioli Game Tools (описание работы) или MultiExtractor. В отличии от Exeinfo PE они позволяют вставить изображение обратно в файл не заморачиваясь в НЕХ-редакторе.
70
Общий форум / Re: Лoкaлизaция Nоdе-WеbKіt
« Последний ответ от leserg73 04 Мая 2020, 14:02:34 »
Нативные сценарии находятся в NW.ЕХЕ с адреса #020ABF68 по #020F9E01 и представляют собой сплошной перечень функций, которые программа выбирает и загружает по определенному алгоритму (принцип LEGO).



Что-то в них изменить или добавить невозможно. В случае нарушения целостности данного блока данных программа аварийно прекращает свою работу. В коде программы (файл nw.exe) чтение функций осуществляется следующим образом:



Из этих функций формируются нативные сценарии JS, которым далее присваиваются имена:



Подобным образом формируются другие сценарии, т.е. складываются из отдельных строк, блоков, а затем выводятся в программе. Остальные сценарии ищите в ресурсах, например сценарий wіndоw_bіndіngѕ.јѕ там и находится (файл nw.pak).

Раз программа проверяет эти данные, то не исключена проверка и всех остальных сценариев JS зашитых в коде (те 50 штук). Поэтому их тотальная замена может быть неудачной; программа не будет работать.  :(

P.S. Кстати я ошибался, когда говорил, что последние версии имеют локализацию. :shuffle:
Имеющиеся языковые файлы относятся к браузеру Chromium, на котором базируется разработка, а к самому приложению не имеют никакого отношения.

Да, если вам нужна для XP, то по заявлению разработчика, последней версией, которая поддерживает Windows XP, является v0.14.7. В общем сами разберетесь, что вам нужнее.  :)
Страницы: 1 2 3 4 5 6 [7] 8 9 10