Сейчас на форуме: _MBK_, Adler (+6 невидимых)

 eXeL@B —› Вопросы новичков —› редактирование dll
Посл.ответ Сообщение

Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 15 июля 2011 23:30
· Личное сообщение · #1

Подскажите, как можно отредактировать ресурсы dll- сменить слово zarafa на другое. Это возможно?
Спасибо.

fd91_15.07.2011_EXELAB.rU.tgz - ZarafaADS.dll



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 15 июля 2011 23:38
· Личное сообщение · #2

Любым редактором ресурсов.



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 31 октября 2011 00:52 · Поправил: Horna
· Личное сообщение · #3

Здравствуйте!
Прошу помощи экспертов в области исследования программ. Тему новую не стал создавать, т.к. мой вопрос можно отнести к этому топику.
Задача несколько иного плана, чем тематика данного сайта. Побывал уже на нескольких форумах по русификации, но там так глубоко никто не копает. Вот поэтому я вас. Перевожу на русский язык интерфейс программы "GIF Construction Set Professional 3", а также плагинов к ней. С самой программой проблем не возникло - все ресурсы доступны и их свободно можно локализовать в шаблонных редакторах. А вот с плагином "Text Effects 2" возникли затруднения. Файл является обычной DLL и находится после установки в папке "plugins" (файл "gcspltx2.dll") корневого каталога программы. Часть ресурсов в нем доступна и их можно перевести, а часть находится в жестко-закодированных строках и их тоже не проблема перевести, только вот нет возможности изменить координаты и размеры контролов так, чтобы текст перевода полностью в них помещался или не налазил на другие элементы интерфейса. Поймите правильно, я не хочу делать сокращения в переводе, я думаю, что можно сделать по нормальному, только надо изменить размеры и координаты некоторых элементов. Но загвоздка в том, что я не могу найти в плагине то место, где прописаны координаты и размеры этих элементов, чтобы их изменить. У меня нет опыта работы с отладчиками и я не знаю ассемблера. Вот поэтому обращаюсь к вам.

Как я пытался решить этот вопрос?

Вот смотрите как выглядит окно плагина после перевода (плагин вызывается из меню программы "Edit => Text Effects #2"):



На скриншоте я указал область (незатемненная), где располагаются эти элементы (контролы) интерфейса. Как видите перевод некоторых элементов или не помещается в установленные границы или налазит на другой контрол. И еще, в зависимости от выбранного эффекта (справа) меняются контролы и их расположение в этой области окна. Всего эффектов 20, соответственно под каждый из них активизируются те или иные контролы.

Вот как выглядит окно плагина в шаблонном редакторе:



Как видите в данной области нет элементов. Они появляются там после загрузки плагина в память ПК, и как я понимаю, в зависимости от выбранного эффекта из списка, просто включается или выключается отображение контролов в данной области окна.
Занимаясь этим вопросом, выяснил, что программно можно создавать элементы интерфейса, а также и само окно средствами WinAPI, к чему, наверняка и прибегли разработчики программы. Чтобы знать, как в отладчике может выглядеть код программы, где идет описание создание элементов диалогового окна, я воспользовался небольшой утилитой, которая устанавливается вместе с программой. Этот файл называется alchuddl.exe (находится в корневом каталоге установленной программы). Интерфейс это программки также написан на API, а в ресурсах у неё только диалоговое окно "О программе". Я загрузил эту программку в OllyDbg и начал знакомиться как с самим отладчиком, так и кодом.
Вот интерфейс этой программки:



А вот как выглядит код программы, где даются параметры для создания кнопки интерфейса "Go". А сама кнопка создается функцией "CreateWindowExA":



Вроде бы ничего сложного, все размеры и координаты видны, я понял соответствие машинных чисел десятичным. Попробовал изменить их - получилось. И я начал искать подобный код в плагине gcspltx2.dll. Каково же было мое разочарование, когда загрузив в OllDbg этот файл я не обнаружил там ничего подобного. Получается координаты и размеры этих контролов задаются как-то по-другому, а как, я не знаю. Думал найду по функции "CreateWindowExA", но она используется только 27 раз, когда контролов для всех 20 эффектов наберется около сотни. В общем я пришел в тупик, хочется решить задачу и не знаю как. Другой вопрос, я не понял как в отладчике работать с DLL. Если программу (ехе) можно запустить и пошагово смотреть, что происходит, то DLL без программы не запустишь... Может я не прав, просто я не знаю как это делать. А у вас на сайте в основном идет работа с ехе-файлами.

Еще мне показалась интересной функция "EnableWindow". Она довольно много используется в плагине:



И как я понял, управляет отображением искомых мной контролов. С помощью программы WinSpy++ я определил, что контролы имеют такие ID, как видно на на приведенном выше скриншоте. К тому же видно, что они включаются или выключаются (TRUE, FALSE). Но, честное слово, не знаю и не могу понять в какую сторону дальше идти, чтобы добраться до координат и размеров.

Прошу у вас помощи. Укажите мне хотя бы один контрол, где прописаны его координаты и размеры, а я уже дальше, по аналогии, определю остальные и сделаю необходимые корректировки. Или подскажите на ЧТО нужно обратить внимание в отладчике.

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

Вот здесь вы можете скачать саму программу и плагин к ней: скачать.
Сам работаю на Windows XP SP3, поэтому не знаю, как ведет себя программа на Vista и Windows 7, она прошлогодняя, а новой с аптечкой я не встречал.




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

Создано: 31 октября 2011 02:39
· Личное сообщение · #4

Взглянул, наспех.

Что там за странные "bitmap" ресурсы с номерами с 1000? Это не они отрисовываются в качестве контролов?

DLL подгружается просто вызовом LoadLibrary(DLLName); Набросайте простейшую программу из одного диалога и загружайте туда что угодно. Или можно поискать готовые лоадеры на тематических сайтах.



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 31 октября 2011 04:32 · Поправил: Horna
· Личное сообщение · #5

gazlan пишет:
Что там за странные "bitmap" ресурсы с номерами с 1000? Это не они отрисовываются в качестве контролов?




gazlan пишет:
Набросайте простейшую программу из одного диалога


Простите, но вы меня не поняли, я не программист. Я просто перевожу интерфейсы программ на русский язык с помощью шаблонных редакторов: Radialix, Susilizer и т.д. Также эти редакторы позволяют подкорректировать размеры визуальных компонентов диалоговых окон, как то: Label, Edit, ComboBox, CheckBox и т.д., т.е. привести в соответствие с текстом, если он не помещается в отведенные границы элемента.

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



Например, когда окно плагина открыто, т.е. он загружен в ОЗУ ПК, с помощью программы WinSpy++ можно узнать размеры каждого контрола.



Также эта программа позволяет произвести изменения загруженной программы или Dll в память ПК. Вот на следующем скриншоте я изменил координаты и размеры указанной метки "Движение:". Теперь она полностью видна.



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

Вот в чем мне нужна помощь. Надеюсь на понимание.



Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 31 октября 2011 06:37 · Поправил: 0xy
· Личное сообщение · #6

Если окна нет в ресурсах, то оно может создаваться DialogBoxParamIndirect.

В общем, "покурите" для начала оконные АПИ.



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 31 октября 2011 06:46
· Личное сообщение · #7

Все, нашел!
Помогла мне в этом IDA. Я правда не знаю как ею пользоваться, поставил, открыл в ней файл плагина и просто просматривал полученный листинг, пока не набрел на любопытное место. Вот, к примеру я взял кнопку:
Рис.1


Рис.2


Рис.3 Потом уже можно в WinHex можно править нужные данные.


Спасибо за внимание.
Извините за беспокойство.


 eXeL@B —› Вопросы новичков —› редактирование dll
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати