eXeL@B —› Программирование —› DLL: Экспорт функций |
Посл.ответ | Сообщение |
|
Создано: 27 декабря 2011 23:43 · Личное сообщение · #1 |
|
Создано: 01 января 2012 19:52 · Поправил: doctor_flasher · Личное сообщение · #2 bugron, нет, в таблице экспорта хранятся только смещения (адреса) функций. Если разработчику нужно сделать так, чтобы другой софт мог знать еще и количество параметров, то они генерируют при компиляции файлы с отладочной информацией. Короче, если разработчики не предоствили тебе файлов с отладочной информацией, то тут только вручную остается анализировать. |
|
Создано: 01 января 2012 20:09 · Личное сообщение · #3 |
|
Создано: 01 января 2012 22:01 · Личное сообщение · #4 |
|
Создано: 01 января 2012 23:21 · Поправил: _ruzmaz_ · Личное сообщение · #5 |
|
Создано: 02 января 2012 01:48 · Личное сообщение · #6 Code:
|
|
Создано: 02 января 2012 02:23 · Личное сообщение · #7 |
|
Создано: 02 января 2012 22:05 · Личное сообщение · #8 Всем спасибо за ответы и проявленный интерес. Учитывая ваши рекомендации посмотрю, что смогу сделать. А вообще , если интересно, вот сам этот |
|
Создано: 03 января 2012 03:51 · Личное сообщение · #9 |
|
Создано: 03 января 2012 17:54 · Личное сообщение · #10 |
|
Создано: 04 января 2012 05:41 · Личное сообщение · #11 |
|
Создано: 04 января 2012 11:30 · Личное сообщение · #12 |
|
Создано: 05 января 2012 01:20 · Личное сообщение · #13 sendersu пишет: можно увидеть пример 3Д интерфейса в инсталяторе? Смотри в youtube пример инсталлятора с объёмными элементами интерфейса: Такие инсталляторы использует группа ReCoding. ----- EnJoy! |
|
Создано: 05 января 2012 11:03 · Личное сообщение · #14 |
|
Создано: 05 января 2012 18:52 · Личное сообщение · #15 bugron пишет: Вот теперь желание покопаться в dll-ке возросло на 100%-ов. В два раза возросло желание покопаться, но вот желания связаться с разработчиком не возникло? Если хочется копать самому - декомпилируй скрипт инсталлятора и пытайся разобраться. Либо косвенно - по внутренним вызовам (например, функция CreateCheckBox вызывает ChangeCheckBoxPosition), дизассемблировав уже собственно dll. Основная информация, которую ты сразу же увидишь в IDA - это количество аргументов. Смотри также аналогичные модули для InnoSetup, чтобы по их документации приблизительно прикинуть назначение функций и их реальные параметры. ----- EnJoy! |
|
Создано: 06 января 2012 14:16 · Личное сообщение · #16 Jupiter пишет: Если хочется копать самому - декомпилируй скрипт инсталлятора и пытайся разобраться.Либо косвенно - по внутренним вызовам (например, функция CreateCheckBox вызывает ChangeCheckBoxPosition), дизассемблировав уже собственно dll. Основная информация, которую ты сразу же увидишь в IDA - это количество аргументов. Смотри также аналогичные модули для InnoSetup, чтобы по их документации приблизительно прикинуть назначение функций и их реальные параметры. Инсталла у меня нету, а если было бы, думаю, что автор скомпилировал её в расширённой версии Inno Setup, которую декомпилировать не удасться. И ещё, не думаю, что кто-то распространил бы аналоги такого модуля (или сам модуль), примеры использования или документацию бесплатно. Даже если я свяжусь с автором, не думаю, что он мне даст всё это даром. |
|
Создано: 06 января 2012 16:33 · Поправил: sendersu · Личное сообщение · #17 Jupiter пишет: Смотри в youtube пример инсталлятора с объёмными элементами интерфейса: R G ReCoding Install Crysis2 впечатлился! и да - Jupiter все правильно написал - ета дллка творение ProFrager (FragSoft) для начала все же можно постучаться к автору....... Jupiter пишет: Такие инсталляторы использует группа ReCoding. нашел информацию что автор как раз входит туда bugron пишет: Даже если я свяжусь с автором, не думаю, что он мне даст всё это даром. а вот ето зря - наперед думать что ничего не получится, любое действие - ето experience, бездействие же - медитация к примеру - автор InnoSetup раздает свой инсталлер за так, а фич у него будет побольше крутых и дорогих комм. аналогов еще можно почитать инфу здесь (топик по инно сетап) http://forum.ru-board.com/topic.cgi?forum=5&topic=36421&start=3080#lt вот нашел пример инсталлера с етим 3Д http://www.sendspace.com/file/q3fc2x |
|
Создано: 06 января 2012 17:04 · Поправил: bugron · Личное сообщение · #18 sendersu пишет: а вот ето зря - наперед думать что ничего не получится, любое действие - ето experience, бездействие же - медитация Я тоже кое-что узнал. Без скрипта Inno Setup понять (или узнать, уже точно не помню) как работают некоторые функции данного модуля невозможно (слова сомого ProFrager-а, прочитал на форуме ру-борд), так что лучше обратиться к автору модуля, что я и сделаю. И ещё, спасибо за пример инсталлера. |
|
Создано: 06 января 2012 23:55 · Поправил: Kindly · Личное сообщение · #19 |
|
Создано: 07 января 2012 00:46 · Поправил: bugron · Личное сообщение · #20 Kindly пишет: профрагер не дает насколько я знаю, он является участником репукерской тимы и это приват Я же говорил, а если сам разработчик не даёт, то остальные тем более (я так думаю). Теперь уже очевидно, что я с этой библиотекой не справлюсь. Но всё-таки было бы интересно узнать тайну этих 3д инсталляторов. |
|
Создано: 07 января 2012 02:32 · Личное сообщение · #21 bugron пишет: Теперь уже очевидно, что я с этой библиотекой не справлюсь не вешать нос, гардемарины путей исследования - множество для начала надо попробовать достать из инсталлера скомпилированный скрипт что сгенерил InnoSetup дальше искать декомпилятор в исходник (не знаю, есть ли такой) путь нумер2 есть дллка, у нее есть експорт - именно через ето АПИ инно скрипт и работает. Изучаем его (Ида, хью или что удобней) также снимаем трассу промониторив работу с етой дллкой (я люблю использовать апилоггер, базу для дллки делаю с помощью imex2spy) вот пример что получилось запуск 2ого процесса первичным инсталлером 23:46:57:292:933 Setup_3~.exe 004099ED 0C4C CreateProcessA(00000000, 00B803EC: ""C:\DOCUME~1\user\LOCALS~1\Temp\is-NVHU9.tmp\Setup_3dif.tmp" /SL5="$B0762,4372129,337920,D:\Setup_3dif.exe" ", 00000000, 00000000, 00000000, 00000000, 00000000, 00000000, 0012FF04, 0012FEF4) ret: 00000001 дальше работает процесс .tmp в темп дир-ии. мониторим его (для етого использую плагин pluginch из СДК апилоггера. вот его трасса (прицепил, внимание! к-во параметров в функциях дллки - всегда 4, реально надо уточнять!) - видно все что происходило (поводил мышкой туда-сюда, Next, поклацал по чекбоксах, выход) Дальше надо думать Работа как сказать творческая, а что вы хотели? Удачи e667_06.01.2012_EXELAB.rU.tgz - Setup_3dif.apilog.zip |
|
Создано: 07 января 2012 13:06 · Личное сообщение · #22 sendersu пишет: не вешать нос, гардемарины путей исследования - множестводля начала надо попробовать достать из инсталлера скомпилированный скрипт что сгенерил InnoSetupдальше искать декомпилятор в исходник (не знаю, есть ли такой)путь нумер2есть дллка, у нее есть експорт - именно через ето АПИ инно скрипт и работает. Изучаем его (Ида, хью или что удобней)также снимаем трассу промониторив работу с етой дллкой (я люблю использовать апилоггер, базу для дллки делаю с помощью imex2spy)вот пример что получилосьзапуск 2ого процесса первичным инсталлером23:46:57:292:933 Setup_3~.exe 004099ED 0C4C CreateProcessA(00000000, 00B803EC: ""C:\DOCUME~1\user\LOCALS~1\Temp\is-NVHU9.tmp\Setup_3dif.tmp" /SL5="$B0762,4372129,337920,D:\Setup_3dif.exe" ", 00000000, 00000000, 00000000, 00000000, 00000000, 00000000, 0012FF04, 0012FEF4) ret: 00000001дальше работает процесс .tmp в темп дир-ии.мониторим его (для етого использую плагин pluginch из СДК апилоггера.вот его трасса (прицепил, внимание! к-во параметров в функциях дллки - всегда 4, реально надо уточнять!) - видно все что происходило (поводил мышкой туда-сюда, Next, поклацал по чекбоксах, выход)Дальше надо думать Работа как сказать творческая, а что вы хотели?Удачи Первый путь не годиться. Распаковщика для расширенной версии Inno Setup ещё нету. Посмотрел ваш лог, действительно, там много интересного. Скажем рассмотрим функцию CreateButton. CreateButton(00000158, 0000014A, 00000048, 0000001A) ret: 00000001 Первые два аргумента, как я понял, это координаты x и у (344, 330 соответственно), следующие две ширина и высота (30, 26) батончика, так ведь? А что она возвращает я не понял (может это taborder?). Ну тогда где же хендл окна инсталлятора? Или скажем CreateFont(00CBD56C: "Arial", 00000000, 0000000F, 0000FFFF) ret: 00000002 Ну Arial понятно что такое, а остальные (00000000, 0000000F, 0000FFFF, 00000002)? |
|
Создано: 07 января 2012 13:29 · Поправил: Kindly · Личное сообщение · #23 bugron - вот держи, оригинальный скомпилированый скрипт (bin) + дизассемблированный вариант его: 5049_07.01.2012_EXELAB.rU.tgz - disasm.rar видно, что dll работает с каждыми контролами по отдельности, а это не есть гуд, т.к. надо идеально подобрать все параметры. ----- Array[Login..Logout] of Life |
|
Создано: 07 января 2012 14:17 · Личное сообщение · #24 |
|
Создано: 07 января 2012 14:32 · Поправил: Kindly · Личное сообщение · #25 я тебе выдрал скрипт, т.к. bugron пишет: Первый путь не годиться. Распаковщика для расширенной версии Inno Setup ещё нету. bugron пишет: И как же мне это использовать? хз, ну представь, тебе надо инициализировать библу, запустить таймер, в котором будут обрабатываться движения мыши, по которым объекты двигаться будут, потом проблемы явные с текстурированием возникнут, с кастомным шрифтом, к тому же кастомные контролы не будут ею обрабатываться, т.к. dll писалась под конкретный тип инсталлера. ты экспорт функи допустим прототипы узнаешь, но логику применения еще не факт что поймешь. так что готовь пару соток WMZ для Профрагера ----- Array[Login..Logout] of Life |
|
Создано: 07 января 2012 14:53 · Личное сообщение · #26 |
|
Создано: 07 января 2012 18:09 · Личное сообщение · #27 Kindly пишет: + дизассемблированный вариант его: что за утиль умеет такое делать? похоже на какойто псевдо ассемблер 2) думаю если и удасться раскрутить логику, то пригодиться ето все только в связке с InnoSetup - ето то что вам надо? 3) думаю имея експорт дллки, мониторинг (трассу) снятую в работе и сам скрипт (в нем видно логику применения) можно зареверсить все ето дело в исходник инсталятора к Inno.. есть и 3ий путь - написать ету красивость самому (OpenGL, DirectX или даже софт рендеринг..) |
|
Создано: 07 января 2012 18:34 · Личное сообщение · #28 sendersu пишет: что за утиль умеет такое делать? http://sourceforge.net/projects/innounp/files/other%20stuff/ROPS%20Disassembler/ Эта dll помимо преобразования инсталла в 3D - занимается еще (легким) скинированием отдельных контролов. На данный момент существуют продвинутые "украшатели", руки + botva.dll или isskin.dll. Народ пишет всякие анимационные примочки и прочее. Если и писать что-то самому 3D, то и адаптировать под весь инсталл, неважно, какие рюши в нем будут. А Surface.dll изначально написана под себя. bugron пишет: Да не нужно мне купить его, тем более что это просто интерес. у тебя интерес похоже, чтоб юзать ее, а не разобраться как оно ----- Array[Login..Logout] of Life | Сообщение посчитали полезным: Jupiter, sendersu |
|
Создано: 07 января 2012 22:19 · Поправил: bugron · Личное сообщение · #29 |
eXeL@B —› Программирование —› DLL: Экспорт функций |