Сейчас на форуме: hgdagon (+5 невидимых)

 eXeL@B —› Программирование —› Как удлинить слово?
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 8.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 08 августа 2007 22:21
· Личное сообщение · #1

При переводе программы на русский язык необходимо удлинить слово. Черех WinHEX и Огр не получается. Слова зашиты в теле программы. Как это можно еще сделать? Подскажите пожалуйста.



Ранг: 36.1 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 08 августа 2007 22:31
· Личное сообщение · #2

Найти свободное место под новое слово и задолбать его туда, найти все референсы (ссылки на старое слово) и поменять адрес на новый ;)
ps или применить правило: кр-ть - сест. тал. !




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 08 августа 2007 22:31
· Личное сообщение · #3

Можно приписать слово в конец секции кода (где нолики) и сменить указатель

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.




Ранг: 105.9 (ветеран), 1thx
Активность: 0.090
Статус: Участник

Создано: 08 августа 2007 22:32
· Личное сообщение · #4

А если вписать на свободное место и поправить ссылку на адрес в коде?




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 08 августа 2007 22:37
· Личное сообщение · #5

Э...
А мы не про то же говорили?

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.





Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 08 августа 2007 22:44
· Личное сообщение · #6

Если есть конкретные вопросы - пиши, помогу.

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.




Ранг: 8.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 09 августа 2007 00:19
· Личное сообщение · #7

Найти свободное место под новое слово и задолбать его туда, найти все референсы (ссылки на старое слово) и поменять адрес на новый ;)


А на примере можешь показать? Я новичок и не все понимаю сразу. Что такое референс и что это за правило?



Ранг: 73.1 (постоянный), 130thx
Активность: 0.040.23
Статус: Участник

Создано: 09 августа 2007 00:30
· Личное сообщение · #8

референс это ссылка, указатель. нужно нйти все места, откуда идёт ссылка на данную строку и изменить их соответственно тому адресу, куда ты переместишь новую строку.



Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 09 августа 2007 08:48
· Личное сообщение · #9

А если там какой-нибудь объект или ещё чего динамическое, которое получается пробегом энного кол-ва указателей, тогда из дебугера вобще не вылезешь.

-----
Я медленно снимаю с неё UPX... *FF_User*





Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 09 августа 2007 12:21
· Личное сообщение · #10

RamMerlabs
Короче, я думаю, что в данном случае не динамическое, а надо банально строковую константу поменять. Я прав?
Если да, то все просто. Ставишь точку останова на функцию, которая берет эту строку в параметрах (например, MessageBoxA, или какая тебе функция другая нужна, руководствуйся даже логом вызова API), смотришь чуть выше в коде на передачу параметра (PUSH ЛЯ_ЛЯ_ЛЯ). Далее: прокручиваешь в дебагере до конца секции кода, там мноооого ноликов обычно.
Забиваешь по адресу БУГОГА свою строку, адрес БУГОГА где-то в области этого массива ноликов. Далее инструкцию "PUSH ЛЯ_ЛЯ_ЛЯ" меняешь на инструкцию "PUSH БУГОГА".
Здесь: ЛЯ_ЛЯ_ЛЯ и БУГОГА - адреса.

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.




Ранг: 51.0 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 09 августа 2007 12:52
· Личное сообщение · #11

Crawler пишет:
Если да, то все просто. Ставишь точку останова на функцию, которая берет эту строку в параметрах (например, MessageBoxA, или какая тебе функция другая нужна, руководствуйся даже логом вызова API), смотришь чуть выше в коде на передачу параметра (PUSH ЛЯ_ЛЯ_ЛЯ). Далее: прокручиваешь в дебагере до конца секции кода, там мноооого ноликов обычно.
Забиваешь по адресу БУГОГА свою строку, адрес БУГОГА где-то в области этого массива ноликов. Далее инструкцию "PUSH ЛЯ_ЛЯ_ЛЯ" меняешь на инструкцию "PUSH БУГОГА".
Здесь: ЛЯ_ЛЯ_ЛЯ и БУГОГА - адреса.


посмеялся от души =))) лялялябугога.
а если серьезно, вот "баги" того метода, что ты написал:
1) ну во-первых, бряки. на эти PUSH можно выйти и без отладчика - например, в HIEW. (клавиша F6, да?)
2) таких push может быть не один - надо все найти.
3) да и строчек для удлинения может оказаться очень много. места в конце секции кода может не хватить. да и вообще его там может не быть. однозначно лучше сразу приделать новую секцию и не компостировать мозги.



Ранг: 113.4 (ветеран)
Активность: 0.130
Статус: Участник
Ветеран

Создано: 09 августа 2007 13:10
· Личное сообщение · #12

sotona пишет:
однозначно лучше сразу приделать новую секцию и не компостировать мозги.

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

-----
моя подпись!





Ранг: 170.1 (ветеран), 96thx
Активность: 0.090.01
Статус: Участник

Создано: 09 августа 2007 13:21
· Личное сообщение · #13

woodyfon пишет:
необходимо удлинить слово

Если текст в ресурсах, то, обычно, редакторы ресурсов (ExeScope,Restorator) сами корректно перекомпилируют скрипт и тогда нет нужды в ручной правке. (ExeScope умеет, когда возможно, перекомпилировать локально). В Delphi часто оказывается, что вскоре за нужным смещением в скрипте есть достаточное количество нулей и тогда несложно подвинуть остаток (после точки правки) в Hex-редакторе, не трогая весь остальной скрипт.

sotona пишет:
на эти PUSH можно выйти и без отладчика - например, в HIEW

Не всегда. Часто на ресурс ссылаются через индекс относительно базового смещения (когда загрузка делается в цикле).




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 09 августа 2007 13:23
· Личное сообщение · #14

sotona
1. То, что можно выйти без дебагера - это не баг;
2. В зависимости от конкретного случая, мы тут ничего не знаем, топикстартер не написал;
3. Э. можно и так, не спорю, хотя нах секция, если слов немного. Хотя хз, в каждом конкретном случае нужно глядеть, последнее замечание справедливо, согласен.

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.




Ранг: 329.6 (мудрец), 192thx
Активность: 0.140.01
Статус: Участник

Создано: 09 августа 2007 15:17
· Личное сообщение · #15

Для перевода строк, зашитых в тело программы, имеется неплохая утилита OgreGUI v2.01, которая переведенные длинные строки помещает в конец программы, и меняет ссылку на адрес этой строки. Кстати, с помощью этой утилиты я переводил на русский язык отладчик OllyDbg. Взять ее можно здесь: localization.net.ru/softtrans/out-of-resources/OgreGUI/ogregui.htm



Ранг: 8.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 09 августа 2007 15:25
· Личное сообщение · #16

Я хочу перевести Abee CHM Maker 1.9.5, но при сканировании в Ogre GUI она вылетает, а в WiHEX нету места, чтобы удлинить. Где- то вычитал, что Abee CHM Maker нужно декомпилировать и переписать некоторые команды вручую. Если бы показали на примере как Caption перевести в Заголовок , я бы хорошо постарался.



Ранг: 21.8 (новичок)
Активность: 0.010
Статус: Участник

Создано: 09 августа 2007 15:48
· Личное сообщение · #17

Давай ссыль на прогу, мож че и попробуем, а там по ходу и обьясним.



Ранг: 105.9 (ветеран), 1thx
Активность: 0.090
Статус: Участник

Создано: 09 августа 2007 16:06
· Личное сообщение · #18

Сейчас качнул Abee CHM Maker посмотрел, что там. Действительно чего то геморойно все.
Из всего инструмента (очень скромного) какой-то результат выдала только одна прога OverNimble Localize Plus. Взять ее можно здесь:
pesypc.mylivepage.ru/file/432/2786_OverNimble_Localize_Plus_1.05.rar
Паришивый интерфейс, сложно разобраться как работает, но работает, чтоб ее...
Попробовал с ее помощью перевести Caption в Заголовок. Получилось. Дальше не стал. Не буду отбирать хлеб у других



Ранг: 8.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 09 августа 2007 17:44
· Личное сообщение · #19

Попробовал с ее помощью перевести Caption в Заголовок. Получилось
Sturgeon, а не мог на примере показатть, пожалуйста.



Ранг: 329.6 (мудрец), 192thx
Активность: 0.140.01
Статус: Участник

Создано: 09 августа 2007 18:13
· Личное сообщение · #20

woodyfon пишет:
Я хочу перевести Abee CHM Maker 1.9.5, но при сканировании в Ogre GUI она вылетает, а в WiHEX нету места, чтобы удлинить


Во-первых, эта программа должна быть распакована. Затем можно в Olly сделать следующее. Включить поиск всех ссылок на текстовые строки. Вы получите список ссылок на текстовые строки. После этого, в конце файла создайте отдельную секцию, куда и записывайте перевод этих строк. И, в отладчике, меняйте ссылку на новый адрес, например, 00529A3C MOV EDX,529AAC ASCII "Customize". Вписывайте слово "Настройка" на свободное место (например, в секции кода на адрес 0053A966), и по адресу 00529A3C меняйте инструкцию на - MOV EDX,53A966 ASCII "Настройка". Сохраняйте изменения, и у Вас будет русский текст.



Ранг: 105.9 (ветеран), 1thx
Активность: 0.090
Статус: Участник

Создано: 09 августа 2007 18:52
· Личное сообщение · #21

Извиняюсь
Глупая программа, которую я имел неосторожность похвалить в предыдущем посте, тоже обрезает русские слова.
Так что единственный способ это как написал vnekrilov и остальные ранее. Программа ничем не запакована. Строки "Caption" кладутся в указатели по следующим адресам.

Address Module Active Disassembly
0051E81B ChmMaker Always MOV ECX,ChmMaker.0051E928
0051EA15 ChmMaker Always MOV ECX,ChmMaker.0051EBFC
005267EC ChmMaker Always MOV ECX,ChmMaker.00526938
00526C56 ChmMaker Always MOV ECX,ChmMaker.00526DD0
0053110A ChmMaker Always MOV EAX,ChmMaker.00531614
00534263 ChmMaker Always MOV EAX,ChmMaker.005346B8

Попробовал поковырять, но пока неудачно. Видимо неудачно выбрал место для вписывания русской строки.



Ранг: 51.0 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 09 августа 2007 19:00
· Личное сообщение · #22

Crawler пишет:
1. То, что можно выйти без дебагера - это не баг;
2. В зависимости от конкретного случая, мы тут ничего не знаем, топикстартер не написал;
3. Э. можно и так, не спорю, хотя нах секция, если слов немного. Хотя хз, в каждом конкретном случае нужно глядеть, последнее замечание справедливо, согласен.

насколько я знаю, у тебя высшее образование и возможно даже математическое. и ты должен помнить, что теоремы доказываются в общем случае, а не в конкретном.



Ранг: 81.5 (постоянный), 5thx
Активность: 0.080
Статус: Участник

Создано: 09 августа 2007 19:03
· Личное сообщение · #23

Sturgeon пишет:
Программа ничем не запакована.

Вроде уже была тема про Abee CHM Maker 1.9.5, там выяснили, что она запакована ExeCryptor, но ресурсы менять можно не распаковывая.
woodyfon пишет:
Если бы показали на примере как Caption перевести в Заголовок

В данном контексте Caption переводится как Название, а не Заголовок.
Ну а вообще может быть можно с помощью инлайна увеличить код? (вопрос ко всем). Т.е. перед кодом нужных нам слов поставить JMP на участок с нулевыми байтами, там вписать измененные (удлиненные) слова и JMP обратно к стандартному пути программы???



Ранг: 329.6 (мудрец), 192thx
Активность: 0.140.01
Статус: Участник

Создано: 09 августа 2007 19:07
· Личное сообщение · #24

Sturgeon пишет:
Программа ничем не запакована


Сегодня я скачал эту программу с сайта разработчика. Программа упакована каким-то пакером, но его не определяет ни PeID, ни DiE, ни RDG Packer Detector v.0,6.5. У программы не поврежден ни код, не таблица импорта. Но пакер добавил две последние секции, на которые постоянно идет ссылка из кода программы на эти секции. OEP для распакованной программы - 0053A87C, для оригинальной упакованной программы - 005500BF. Никакой сложности в распаковке программы нет, на OEP можно пройти с установкой PBM на доступе на секцию кода, когда после нескольких нажатий на клавишу F9, программа останавливается на адресе 0053A87C. Все текстовые строки находятся в секции кода программы, а не в секции, созданной пакером. И, кстати, OgreGUI v2.01 на распакованной программе не вылетает, и определяет все строки.



Ранг: 81.5 (постоянный), 5thx
Активность: 0.080
Статус: Участник

Создано: 09 августа 2007 19:15
· Личное сообщение · #25

woodyfon пишет:
но при сканировании в Ogre GUI она вылетает

vnekrilov пишет:
И, кстати, OgreGUI v2.01 на распакованной программе не вылетает, и определяет все строки.

Странно, у меня она и так и так не вылетает из Огра. woodyfon, просто в Огре поэкспериментируй с настройками. Там не обязательно надо, чтобы все настройки стояли, впиши количество символов, чтобы были равны 4, выключи опции Редактор ресурсов и Реконструкция, ну и поиск текста оставь только тот, который ищешь - в твоем случае английский.



Ранг: 8.3 (гость)
Активность: 0.010
Статус: Участник

Создано: 09 августа 2007 23:03
· Личное сообщение · #26

Приведу код, слова в котором надо перевести:
005346AB 00 DB 00
005346AC . 0604 DW 0406
005346AE 00 DB 00
005346AF 00 DB 00
005346B0 . FFFFFFFF DD FFFFFFFF
005346B4 . 07000000 DD 00000007
005346B8 . 43 61 70 74 6>ASCII "Caption",0
005346C0 . FFFFFFFF DD FFFFFFFF
005346C4 . 04000000 DD 00000004
005346C8 . 46 69 6C 65 0>ASCII "File",0
005346CD 00 DB 00
005346CE 00 DB 00
005346CF 00 DB 00
005346D0 . FFFFFFFF DD FFFFFFFF
005346D4 . 04000000 DD 00000004
005346D8 . 50 61 74 68 0>ASCII "Path",0
005346DD 00 DB 00
005346DE 00 DB 00
005346DF 00 DB 00
005346E0 . 0000 DW 0000
005346E2 00 DB 00
005346E3 00 DB 00

Я так понимаю, что по адресу 005346AB надо ставить безусловный переход JMP и далее искать "безкомандные строки" типа DB00. и там уже изменять. Какие нужно внести изменения, чтобы получить в программе не Caption, а Заголовок или Название. И что, значит нолик, в конце после слов в кавычках. Где можна достать коды символов?



Ранг: 329.6 (мудрец), 192thx
Активность: 0.140.01
Статус: Участник

Создано: 10 августа 2007 05:42
· Личное сообщение · #27

woodyfon пишет:
Я так понимаю, что по адресу 005346AB надо ставить безусловный переход JMP и далее искать "безкомандные строки" типа DB00


Понимаете неправильно. Программа написана на Delphi, и в ней нельзя переводить все строки, зашитые в тело программы, поскольку программа может не запуститься. Я выше писал, что сначала нужно в OllyDbg выбрать команду Поиск ссылок на все текстовые строки. Вы получите очень большое число найденных ссылок. Из этих ссылок надо найти те ссылки, которые относятся к интерфейсу программы: меню, диалоговым окнам, строковым ресурсам и т.д. так, в вышеприведенном Вами коде переводить слово Caption нельзя, поскольку оно находится в секции кода, и замена этого слова русским словом Заголовок или Название вызовет сбой в программе. Надо переводить только те слова, которые находятся в секции ресурсов .rsrc.
woodyfon пишет:
И что, значит нолик, в конце после слов в кавычках


Любая текстовая строка в программе заканчивается нолем. А, вообще, для перевода этой программы я рекомендовал бы переводчик Passolo. Он отображает в визуальном режиме ресурсы RCData ( как мы их видим на экране), и позволяет выполнить перевод программы. Это, по моему мнению (и не только моему) - одна из сильнейших программ для русификации софта. Скачать эту программу с русификатором и таблеткой можно отсюда: localization.net.ru/softtrans/sample_translators/Passolo/passolo.htm
Там же имеются неплохие статьи по русификации программ.




Ранг: 116.6 (ветеран), 8thx
Активность: 0.050
Статус: Участник

Создано: 10 августа 2007 06:03
· Личное сообщение · #28

woodyfon пишет:
005346B0 . DD FFFFFFFF
005346B4 . DD 00000007
005346B8 . ASCII "Caption",0


В случае программы на Delphi помимо нового значения строки нужно еще перетаскивать и 2 DD перед ним - первый DD это максимальный размер строки - для констант он равен FFFFFFFF, второй DD - это длина строки. Т.е. если ты хочешь перевести эту строку (как тебе уже предложили ранее) - нужно найти участок памяти в самом файле (е примеру это будет 005A0000) и записать туда следующее:

005A0000 .DD FFFFFFFF
005A0004 .DD 0000009 (длина текста "Заголовок")
005A0008 .ASCII "Заголовок",0

Все стринг референсы в коде менять с 005346B8 на 005A0008.
Стринг референсы с учетом того, что прога написана на Delphi ищутся гораздо быстрее если использовать релоки (т.к. они скорее всего в проге не отрезаны).




Ранг: 170.1 (ветеран), 96thx
Активность: 0.090.01
Статус: Участник

Создано: 10 августа 2007 08:10
· Личное сообщение · #29

woodyfon пишет:
Я хочу перевести Abee CHM Maker 1.9.5

Извиняюсь, что не по теме - но зачем переводить эту, IMHO, бесполезную программу. Лучше потратить силы на что-то стоящее. Для CHM я бы порекомендовал h**p://yarix.by.ru/htm2chm-3.0.9.3-en.exe (FREE).




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 10 августа 2007 13:00
· Личное сообщение · #30

gazlan пишет:
Извиняюсь, что не по теме - но зачем переводить эту, IMHO, бесполезную программу.

+1

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



sotona пишет:
насколько я знаю, у тебя высшее образование и возможно даже математическое. и ты должен помнить, что теоремы доказываются в общем случае, а не в конкретном.

Да, высшее математическое . Получаю второе.
А великая теорема Ферма? А теоремы Варенга? А множество других? Они многократно доказывались в частных случаях, когда бывает невозможно доказать в общем случае. Но это к слову.

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.



. 1 . 2 . >>
 eXeL@B —› Программирование —› Как удлинить слово?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати