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

 eXeL@B —› Программирование —› DLL: Экспорт функций
Посл.ответ Сообщение

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

Создано: 27 декабря 2011 23:43
· Личное сообщение · #1

Здравствуйте! Есть dll файл, имеются названия экспортируемых функций. Вот, интересно, а можно как нибудь получить информацию о данной функции (или процедуре), то есть узнать синаксис, число параметров и т.д.?



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

Создано: 01 января 2012 19:52 · Поправил: doctor_flasher
· Личное сообщение · #2

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




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 01 января 2012 20:09
· Личное сообщение · #3

bugron
если есть файл, который эту длл активно юзает, то задача сильно упращается иначе придется все это в статике смотреть.

-----
[nice coder and reverser]





Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

Создано: 01 января 2012 22:01
· Личное сообщение · #4

IDA



Ранг: 114.8 (ветеран), 41thx
Активность: 0.10
Статус: Участник

Создано: 01 января 2012 23:21 · Поправил: _ruzmaz_
· Личное сообщение · #5

если к именам экспортируемых функций применено декорирование, учитывающее принимаемые функцией параметры, соглашение о вызове и т.п. (можно встретить в dll, написанных на c++), то можно по крайней мере что-то узнать и без анализа
а вообще ida же есть



Ранг: 23.4 (новичок), 4thx
Активность: 0.020
Статус: Участник

Создано: 02 января 2012 01:48
· Личное сообщение · #6

--> Dependency Walker Link <-- для этого вам подойдет ?
Code:
  1. Запускается в Windows 95, 98, Me, NT, 2000, XP, 2003, Vista и 7
  2. Отображает список всех зависимых модулей (PE-файлов)
  3. Поддерживает 64-битные исполняемые файлы и исполняемые файлы Windows CE
  4. Определяет, если модуль написан на C или C++
  5. Определяет модули, не включенные в таблицу импорта
  6. Цветовое кодирование списка для более легкого выявления проблем (разорванные зависимости обозначаются красным)
  7. Рекурсивная трассировка зависимостей и отображение зависимостей всех модулей в виде дерева




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

Создано: 02 января 2012 02:23
· Личное сообщение · #7

res нед



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

Создано: 02 января 2012 22:05
· Личное сообщение · #8

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




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 03 января 2012 03:51
· Личное сообщение · #9

bugron
Это не модуль ли для InnoSetup?
Если так, то поинтересуйся у Profrager

-----
EnJoy!




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

Создано: 03 января 2012 17:54
· Личное сообщение · #10

Jupiter пишет:
Это не модуль ли для InnoSetup?Если так, то поинтересуйся у Profrager

Не знаю точно, но это лежало у меня с плагинами и модулями для Inno. Вот и хотел узнать для чего предназначена.




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 04 января 2012 05:41
· Личное сообщение · #11

bugron пишет:
Вот и хотел узнать для чего предназначена.

Предназначена для отрисовки 3D-интерфейса инсталлятора.

-----
EnJoy!




Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 04 января 2012 11:30
· Личное сообщение · #12

можно увидеть пример 3Д интерфейса в инсталяторе?




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 05 января 2012 01:20
· Личное сообщение · #13

sendersu пишет:
можно увидеть пример 3Д интерфейса в инсталяторе?

Смотри в youtube пример инсталлятора с объёмными элементами интерфейса: R G ReCoding Install Crysis2
Такие инсталляторы использует группа ReCoding.

-----
EnJoy!




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

Создано: 05 января 2012 11:03
· Личное сообщение · #14

Jupiter пишет:
Предназначена для отрисовки 3D-интерфейса инсталлятора.

Вот теперь желание покопаться в dll-ке возросло на 100%-ов.




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 05 января 2012 18:52
· Личное сообщение · #15

bugron пишет:
Вот теперь желание покопаться в dll-ке возросло на 100%-ов.

В два раза возросло желание покопаться, но вот желания связаться с разработчиком не возникло?

Если хочется копать самому - декомпилируй скрипт инсталлятора и пытайся разобраться.
Либо косвенно - по внутренним вызовам (например, функция CreateCheckBox вызывает ChangeCheckBoxPosition), дизассемблировав уже собственно dll. Основная информация, которую ты сразу же увидишь в IDA - это количество аргументов. Смотри также аналогичные модули для InnoSetup, чтобы по их документации приблизительно прикинуть назначение функций и их реальные параметры.

-----
EnJoy!




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

Создано: 06 января 2012 14:16
· Личное сообщение · #16

Jupiter пишет:
Если хочется копать самому - декомпилируй скрипт инсталлятора и пытайся разобраться.Либо косвенно - по внутренним вызовам (например, функция CreateCheckBox вызывает ChangeCheckBoxPosition), дизассемблировав уже собственно dll. Основная информация, которую ты сразу же увидишь в IDA - это количество аргументов. Смотри также аналогичные модули для InnoSetup, чтобы по их документации приблизительно прикинуть назначение функций и их реальные параметры.

Инсталла у меня нету, а если было бы, думаю, что автор скомпилировал её в расширённой версии Inno Setup, которую декомпилировать не удасться. И ещё, не думаю, что кто-то распространил бы аналоги такого модуля (или сам модуль), примеры использования или документацию бесплатно. Даже если я свяжусь с автором, не думаю, что он мне даст всё это даром.



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 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



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

Создано: 06 января 2012 17:04 · Поправил: bugron
· Личное сообщение · #18

sendersu пишет:
а вот ето зря - наперед думать что ничего не получится, любое действие - ето experience, бездействие же - медитация

Я тоже кое-что узнал. Без скрипта Inno Setup понять (или узнать, уже точно не помню) как работают некоторые функции данного модуля невозможно (слова сомого ProFrager-а, прочитал на форуме ру-борд), так что лучше обратиться к автору модуля, что я и сделаю. И ещё, спасибо за пример инсталлера.




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 06 января 2012 23:55 · Поправил: Kindly
· Личное сообщение · #19

профрагер не дает
насколько я знаю, он является участником репукерской тимы и это приват

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

-----
Array[Login..Logout] of Life




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

Создано: 07 января 2012 00:46 · Поправил: bugron
· Личное сообщение · #20

Kindly пишет:
профрагер не дает насколько я знаю, он является участником репукерской тимы и это приват

Я же говорил, а если сам разработчик не даёт, то остальные тем более (я так думаю). Теперь уже очевидно, что я с этой библиотекой не справлюсь. Но всё-таки было бы интересно узнать тайну этих 3д инсталляторов.



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 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



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

Создано: 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)?




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 07 января 2012 13:29 · Поправил: Kindly
· Личное сообщение · #23

bugron - вот держи, оригинальный скомпилированый скрипт (bin) + дизассемблированный вариант его:

5049_07.01.2012_EXELAB.rU.tgz - disasm.rar

видно, что dll работает с каждыми контролами по отдельности, а это не есть гуд, т.к. надо идеально подобрать все параметры.

-----
Array[Login..Logout] of Life




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

Создано: 07 января 2012 14:17
· Личное сообщение · #24

Kindly пишет:
вот держи, оригинальный скомпилированый скрипт (bin) + дизассемблированный вариант его: 5049_07.01.2012_EXELAB.rU.tgz - disasm.rar
видно, что dll работает с каждыми контролами по отдельности, а это не есть гуд, т.к. надо идеально подобрать все параметры.

И как же мне это использовать?




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 07 января 2012 14:32 · Поправил: Kindly
· Личное сообщение · #25

я тебе выдрал скрипт, т.к.
bugron пишет:
Первый путь не годиться. Распаковщика для расширенной версии Inno Setup ещё нету.


bugron пишет:
И как же мне это использовать?

хз, ну представь, тебе надо инициализировать библу, запустить таймер, в котором будут обрабатываться движения мыши, по которым объекты двигаться будут, потом проблемы явные с текстурированием возникнут, с кастомным шрифтом, к тому же кастомные контролы не будут ею обрабатываться, т.к. dll писалась под конкретный тип инсталлера.
ты экспорт функи допустим прототипы узнаешь, но логику применения еще не факт что поймешь.
так что готовь пару соток WMZ для Профрагера

-----
Array[Login..Logout] of Life




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

Создано: 07 января 2012 14:53
· Личное сообщение · #26

Kindly пишет:
так что готовь пару соток WMZ для Профрагера

Да не нужно мне купить его, тем более что это просто интерес.



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 07 января 2012 18:09
· Личное сообщение · #27

Kindly пишет:
+ дизассемблированный вариант его:

что за утиль умеет такое делать?
похоже на какойто псевдо ассемблер

2) думаю если и удасться раскрутить логику, то пригодиться ето все только в связке с InnoSetup - ето то что вам надо?

3) думаю имея експорт дллки, мониторинг (трассу) снятую в работе и сам скрипт (в нем видно логику применения) можно зареверсить все ето дело в исходник инсталятора к Inno..

есть и 3ий путь - написать ету красивость самому (OpenGL, DirectX или даже софт рендеринг..)




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 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

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

Создано: 07 января 2012 22:19 · Поправил: bugron
· Личное сообщение · #29

Kindly пишет:
у тебя интерес похоже, чтоб юзать ее, а не разобраться как оно

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


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


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