Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск функции в .dll библиотеке, с помощью Dependency Walker 
V
    Опции темы
MarkHunt
Дата 14.6.2013, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 7.3.2013

Репутация: нет
Всего: нет



Здравствуйте! Заранее извиняюсь, если я ошибся разделом форума.
В общем у меня следующая проблема.
У меня есть некая dll библиотека, из которой мне нужно вызвать определённые функции. И мне нужно узнать точные названия этих функций и типы и кол-во параметров, которые нужно передать в них, ну и получить какой-то результат. Так вот, я почитал в интернете, что можно возпользоваться программой Dependency Walker, для того чтобы посмотреть какие функции имеются в dll файле. Но я не понял как пользоваться этой программой, чтобы найти то, что мне нужно.
Чтобы немного разобраться в программе, я для примера попробовал посмотреть файл user32.dll. Я точно знаю, что в этой библиотеке есть функция LockWorkStation, которая блокирует комп (её ещё можно вызвать клавишами Win + L). Ну, допустим я хочу найти эту функцию в библиотеке, узнать какие параметры в неё можно передавать, что она будет возвращать мне и т.д. И можно ли вообще сделать такое? В общем когда я открываю user32.dll с помощью этой программы, вижу такую картину. Но что делать дальше?
user posted image
Может быть есть кто-то, кто встречался с подобым или просто знает что-то из этой области? Заранее, благодарен за помощь.

Это сообщение отредактировал(а) MarkHunt - 14.6.2013, 22:41
PM MAIL   Вверх
feodorv
Дата 14.6.2013, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 9
Всего: 45



В программе два раза кликните мышкой по интересующей Вас функции, откроется браузер с соответствующей страницей англоязычной MSDN. Там и прочитаете про параметры вызова функции.
(Картинки не видно)))


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
MarkHunt
Дата 14.6.2013, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 7.3.2013

Репутация: нет
Всего: нет



Цитата(feodorv @  14.6.2013,  22:23 Найти цитируемый пост)
Картинки не видно

Странно, конечно. Перезалил на другой хостинг, может сейчас будет видна.

Цитата(feodorv @  14.6.2013,  22:23 Найти цитируемый пост)
В программе два раза кликните мышкой по интересующей Вас функции, откроется браузер с соответствующей страницей англоязычной MSDN.

Что-то не нашёл, куда эт так кликать нужно.

Добавлено через 9 минут и 48 секунд
Кстати, вообще можно ли узнать как-то, какие функции есть в dll-ке и как их использовать, без справочника (с помощью той же программы например)? Или обязательно нужно иметь API к dll файлу?
PM MAIL   Вверх
feodorv
Дата 14.6.2013, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 9
Всего: 45



Цитата(MarkHunt @  14.6.2013,  23:53 Найти цитируемый пост)
Перезалил на другой хостинг, может сейчас будет видна.

Теперь видно)))


Цитата(MarkHunt @  14.6.2013,  23:53 Найти цитируемый пост)
Что-то не нашёл, куда эт так кликать нужно.

На панели справа, где список функций.


Цитата(MarkHunt @  14.6.2013,  23:53 Найти цитируемый пост)
Кстати, вообще можно ли узнать как-то, какие функции есть в dll-ке и как их использовать, без справочника (с помощью той же программы например)? 

Список экспортируемых и импортируемых функций (то есть их имена) доступен в dll. А вот параметры вызова, возвращаемое значение (в C) etc в dll не пишется (да и зачем???). Подобную информацию можно получить из .h файла.


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
MarkHunt
Дата 14.6.2013, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 7.3.2013

Репутация: нет
Всего: нет



feodorv, спасибо. Наконец-таки разобрался где эти функции искать  smile Просто, у меня на картинке, справа два списка функций, и я сначала не понял в какой именно список смотреть. Оказывается надо было слева (в дереве объектов) выбрать именно user32.dll, тогда справа верхний список пропадёт, а останется только нижний. В нём то и будет список функций из user32.dll.

У меня ещё небольшой вопрос  smile 
Обязательно ли прилагается к .dll-файлу .h-файл, или .h-файл может и вовсе отсутствовать?
PM MAIL   Вверх
feodorv
Дата 15.6.2013, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 9
Всего: 45



Цитата(MarkHunt @  15.6.2013,  00:46 Найти цитируемый пост)
Обязательно ли прилагается к .dll-файлу .h-файл, или .h-файл может и вовсе отсутствовать? 

Нет, не обязательно. Вижу такие варианты:
  • библиотека является системной, тогда соответствующий .h файл прилагается к компилятору или является частью какого-либо DSK. Если в соответствующем .h файле не описана экспортируемая из dll функция (для Microsoft дело обычное), то тогда на помощь приходит интернет (впрочем, он всегда приходит на помощь, особенно в случае поиска примера применения искомой функции)
  • библиотека является плагином (как вариант - COM сервером), тогда .h файл (скорее всего) будет отсутствовать, так как соглашения о вызовах и параметрах задаётся самой программой, к которой эта dll идёт плагином
  • библиотека идёт в составе стороннего программного продукта, тогда всё зависит от разработчика (обычно смысла в предоставлении внутренней информации нет, соответственно, нет и .h файла)
  • библиотека предназначена для использования третьими лицами, вот тогда .h файл существенно необходим
В любом случае .h файл нужен только на этапе компиляции той или иной программы. Когда компиляция позади, .h уже не нужен.


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
MarkHunt
Дата 15.6.2013, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 7.3.2013

Репутация: нет
Всего: нет



feodorv, большое спасибо, за толковое объяснение
PM MAIL   Вверх
xvr
Дата 16.6.2013, 12:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(feodorv @  15.6.2013,  01:41 Найти цитируемый пост)
библиотека является плагином (как вариант - COM сервером),

Хочу добавить пару слов к этому варианту. 

Если библиотека является COM сервером, то в ней может присутствовать Type Library (а может и не присутствовать). Если она есть, то из нее можно извлечь практически полную информацию о классах и методах этой библиотеки. Попробуйте открыть вашу dll как Type Library в утилите OLE-COM Object Viewer (идет в составе MS VS и в MS SDK)


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0530 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.