Сейчас на форуме: hgdagon (+5 невидимых) |
eXeL@B —› Программирование —› Как удлинить слово? |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 08 августа 2007 22:21 · Личное сообщение · #1 |
|
Создано: 08 августа 2007 22:31 · Личное сообщение · #2 |
|
Создано: 08 августа 2007 22:31 · Личное сообщение · #3 |
|
Создано: 08 августа 2007 22:32 · Личное сообщение · #4 |
|
Создано: 08 августа 2007 22:37 · Личное сообщение · #5 |
|
Создано: 08 августа 2007 22:44 · Личное сообщение · #6 |
|
Создано: 09 августа 2007 00:19 · Личное сообщение · #7 |
|
Создано: 09 августа 2007 00:30 · Личное сообщение · #8 |
|
Создано: 09 августа 2007 08:48 · Личное сообщение · #9 |
|
Создано: 09 августа 2007 12:21 · Личное сообщение · #10 RamMerlabs Короче, я думаю, что в данном случае не динамическое, а надо банально строковую константу поменять. Я прав? Если да, то все просто. Ставишь точку останова на функцию, которая берет эту строку в параметрах (например, MessageBoxA, или какая тебе функция другая нужна, руководствуйся даже логом вызова API), смотришь чуть выше в коде на передачу параметра (PUSH ЛЯ_ЛЯ_ЛЯ). Далее: прокручиваешь в дебагере до конца секции кода, там мноооого ноликов обычно. Забиваешь по адресу БУГОГА свою строку, адрес БУГОГА где-то в области этого массива ноликов. Далее инструкцию "PUSH ЛЯ_ЛЯ_ЛЯ" меняешь на инструкцию "PUSH БУГОГА". Здесь: ЛЯ_ЛЯ_ЛЯ и БУГОГА - адреса. ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. |
|
Создано: 09 августа 2007 12:52 · Личное сообщение · #11 Crawler пишет: Если да, то все просто. Ставишь точку останова на функцию, которая берет эту строку в параметрах (например, MessageBoxA, или какая тебе функция другая нужна, руководствуйся даже логом вызова API), смотришь чуть выше в коде на передачу параметра (PUSH ЛЯ_ЛЯ_ЛЯ). Далее: прокручиваешь в дебагере до конца секции кода, там мноооого ноликов обычно. Забиваешь по адресу БУГОГА свою строку, адрес БУГОГА где-то в области этого массива ноликов. Далее инструкцию "PUSH ЛЯ_ЛЯ_ЛЯ" меняешь на инструкцию "PUSH БУГОГА". Здесь: ЛЯ_ЛЯ_ЛЯ и БУГОГА - адреса. посмеялся от души =))) лялялябугога. а если серьезно, вот "баги" того метода, что ты написал: 1) ну во-первых, бряки. на эти PUSH можно выйти и без отладчика - например, в HIEW. (клавиша F6, да?) 2) таких push может быть не один - надо все найти. 3) да и строчек для удлинения может оказаться очень много. места в конце секции кода может не хватить. да и вообще его там может не быть. однозначно лучше сразу приделать новую секцию и не компостировать мозги. |
|
Создано: 09 августа 2007 13:10 · Личное сообщение · #12 |
|
Создано: 09 августа 2007 13:21 · Личное сообщение · #13 woodyfon пишет: необходимо удлинить слово Если текст в ресурсах, то, обычно, редакторы ресурсов (ExeScope,Restorator) сами корректно перекомпилируют скрипт и тогда нет нужды в ручной правке. (ExeScope умеет, когда возможно, перекомпилировать локально). В Delphi часто оказывается, что вскоре за нужным смещением в скрипте есть достаточное количество нулей и тогда несложно подвинуть остаток (после точки правки) в Hex-редакторе, не трогая весь остальной скрипт. sotona пишет: на эти PUSH можно выйти и без отладчика - например, в HIEW Не всегда. Часто на ресурс ссылаются через индекс относительно базового смещения (когда загрузка делается в цикле). |
|
Создано: 09 августа 2007 13:23 · Личное сообщение · #14 sotona 1. То, что можно выйти без дебагера - это не баг; 2. В зависимости от конкретного случая, мы тут ничего не знаем, топикстартер не написал; 3. Э. можно и так, не спорю, хотя нах секция, если слов немного. Хотя хз, в каждом конкретном случае нужно глядеть, последнее замечание справедливо, согласен. ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. |
|
Создано: 09 августа 2007 15:17 · Личное сообщение · #15 Для перевода строк, зашитых в тело программы, имеется неплохая утилита OgreGUI v2.01, которая переведенные длинные строки помещает в конец программы, и меняет ссылку на адрес этой строки. Кстати, с помощью этой утилиты я переводил на русский язык отладчик OllyDbg. Взять ее можно здесь: localization.net.ru/softtrans/out-of-resources/OgreGUI/ogregui.htm |
|
Создано: 09 августа 2007 15:25 · Личное сообщение · #16 Я хочу перевести Abee CHM Maker 1.9.5, но при сканировании в Ogre GUI она вылетает, а в WiHEX нету места, чтобы удлинить. Где- то вычитал, что Abee CHM Maker нужно декомпилировать и переписать некоторые команды вручую. Если бы показали на примере как Caption перевести в Заголовок , я бы хорошо постарался. |
|
Создано: 09 августа 2007 15:48 · Личное сообщение · #17 |
|
Создано: 09 августа 2007 16:06 · Личное сообщение · #18 Сейчас качнул Abee CHM Maker посмотрел, что там. Действительно чего то геморойно все. Из всего инструмента (очень скромного) какой-то результат выдала только одна прога OverNimble Localize Plus. Взять ее можно здесь: pesypc.mylivepage.ru/file/432/2786_OverNimble_Localize_Plus_1.05.rar Паришивый интерфейс, сложно разобраться как работает, но работает, чтоб ее... Попробовал с ее помощью перевести Caption в Заголовок. Получилось. Дальше не стал. Не буду отбирать хлеб у других |
|
Создано: 09 августа 2007 17:44 · Личное сообщение · #19 |
|
Создано: 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 "Настройка". Сохраняйте изменения, и у Вас будет русский текст. |
|
Создано: 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 Попробовал поковырять, но пока неудачно. Видимо неудачно выбрал место для вписывания русской строки. |
|
Создано: 09 августа 2007 19:00 · Личное сообщение · #22 Crawler пишет: 1. То, что можно выйти без дебагера - это не баг; 2. В зависимости от конкретного случая, мы тут ничего не знаем, топикстартер не написал; 3. Э. можно и так, не спорю, хотя нах секция, если слов немного. Хотя хз, в каждом конкретном случае нужно глядеть, последнее замечание справедливо, согласен. насколько я знаю, у тебя высшее образование и возможно даже математическое. и ты должен помнить, что теоремы доказываются в общем случае, а не в конкретном. |
|
Создано: 09 августа 2007 19:03 · Личное сообщение · #23 Sturgeon пишет: Программа ничем не запакована. Вроде уже была тема про Abee CHM Maker 1.9.5, там выяснили, что она запакована ExeCryptor, но ресурсы менять можно не распаковывая. woodyfon пишет: Если бы показали на примере как Caption перевести в Заголовок В данном контексте Caption переводится как Название, а не Заголовок. Ну а вообще может быть можно с помощью инлайна увеличить код? (вопрос ко всем). Т.е. перед кодом нужных нам слов поставить JMP на участок с нулевыми байтами, там вписать измененные (удлиненные) слова и JMP обратно к стандартному пути программы??? |
|
Создано: 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 на распакованной программе не вылетает, и определяет все строки. |
|
Создано: 09 августа 2007 19:15 · Личное сообщение · #25 woodyfon пишет: но при сканировании в Ogre GUI она вылетает vnekrilov пишет: И, кстати, OgreGUI v2.01 на распакованной программе не вылетает, и определяет все строки. Странно, у меня она и так и так не вылетает из Огра. woodyfon, просто в Огре поэкспериментируй с настройками. Там не обязательно надо, чтобы все настройки стояли, впиши количество символов, чтобы были равны 4, выключи опции Редактор ресурсов и Реконструкция, ну и поиск текста оставь только тот, который ищешь - в твоем случае английский. |
|
Создано: 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, а Заголовок или Название. И что, значит нолик, в конце после слов в кавычках. Где можна достать коды символов? |
|
Создано: 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 Там же имеются неплохие статьи по русификации программ. |
|
Создано: 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 ищутся гораздо быстрее если использовать релоки (т.к. они скорее всего в проге не отрезаны). |
|
Создано: 10 августа 2007 08:10 · Личное сообщение · #29 |
|
Создано: 10 августа 2007 13:00 · Личное сообщение · #30 gazlan пишет: Извиняюсь, что не по теме - но зачем переводить эту, IMHO, бесполезную программу. +1 Вообще все более-менее приличные программы должны или девелопером переводиться, или хотя бы иметь языковые файлы для перевода с описанием. А копаться в кодах, чтобы перевести что-то, это очень накладно. sotona пишет: насколько я знаю, у тебя высшее образование и возможно даже математическое. и ты должен помнить, что теоремы доказываются в общем случае, а не в конкретном. Да, высшее математическое . Получаю второе. А великая теорема Ферма? А теоремы Варенга? А множество других? Они многократно доказывались в частных случаях, когда бывает невозможно доказать в общем случае. Но это к слову. ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. |
. 1 . 2 . >> |
eXeL@B —› Программирование —› Как удлинить слово? |
Эта тема закрыта. Ответы больше не принимаются. |