как узнать какие функции есть в dll
Как узнать какие функции есть в dll
Лучший отвечающий
Вопрос
я начинающий программист на VB2010
я просматривал учебники которые есть тут на сайте и наткнулся на статью в которой описывалось вызов API функции «MessageBox» из библиотеки User32.dll. И мне стало интересно а какие ещё функции скрывает эта библиотека. Например мне бы хотелось открыть таким образом другие виды msg Box’а. Например как не будь ErrorBox или что-то в этом духе.
Я искал по интернету с похожими запросами однако все они ссылаются на depends.exe (который якобы должен быть вшит в VS) однако его у меня нет. Искал где скачать и набрёл на depends22_x64. Однако не смог разобраться с ней так как моё познание английского очень низко!
Помогите пожалуйста! Как узнать функции которые хранятся в User32.dll другими методами
Или подскажите самые часто используемые функции из этой библиотеки (желательно с синтаксисом объявления и вызова)
Извиняюсь за назойливость. Однако за ранее благодарю!
20 ответов
Ну, этот вопрос простителен для новичка. В DLL копаться не нужно, тем более в системных. MSDN вам в руки.
А если просто просмотреть список ф-ций в DLL (да и для много другого) можно заюзать HIEW.
Evg64, а какая у Вас вообще цель? Создать свою DLL, просто спортивный интерес или что-то иное? Если Вы хотите использовать функции Win API, то Вам не нужно вообще заботиться о загрузке функции из DLL: за Вас всё уже сделано в виде библиотек. В этом случае, как сказал Lerkin, смотрите MSDN относительно Вашей задачи.
Если же всё-таки нужен список, есть утилита, правда шараварная: PE Explorer. Можно слить триалку на 30 дней, но, думаю, этого хватит, чтобы удовлетворить любопытство 🙂
А вообще узнать больше о длл меня сподвигла банальная мысль о том, что знание возможностей длл файлов расширит возможности программирования)
Насчет MSDN я не совсем понял: ведь не может же там содержаться информации по всему многообразию функций из всего многообразия длл файлов? Я там смотрел, да можно было и не смотреть) Может я что-то понял не так?
Прикинь, может, особенно если учесть что объем МСДН 1.5 гига, и все ф-ции, содержащиеся в длл-ках виндов там описаны.
А вообще работают от обратного: ищут функцию для решения определенных задач, а потом смотрят что надо подключить для вызова этой ф-ции.
И не смотри, не трать время. dll-ку в Блокноте открываешь, и читаешь. Нормальным, русским языком написано.
P.S. Есть начинающие, которым желательно тут же стать заканчивающими.
Попробую развернуто закрыть эту тему.
Как же избежать таких потерь? А достаточно изложить на хорошем форуме свой вариант постижения таинств программирования, и стоически выдержав первую волну сарказма со стороны участников, начать задавать наводящие вопросы, когда посоветуют, например, обратиться к MSDN. Попросить посоветовать доступную для понимания литературу по программированию в WinAPI, и много чего еще.
А самое главное, нужно четко понимать, ЧТО человек собрался программировать и ДЛЯ ЧЕГО.
Есть ли способ найти все функции, предоставляемые dll
Я искал способ получить все строки, которые сопоставляются с именами функций в dll.
Я имею в виду все строки, для которых вы можете вызвать GetProcAddress. Если вы делаете шестнадцатеричный дамп dll, символы (строки) есть, но я полагаю, что должен мне системный вызов, чтобы получить эти имена.
13 ответов
Это требует немного работы, но вы можете сделать это программно, используя DbgHelp библиотека от Microsoft.
Если у вас есть MS Visual Studio, есть инструмент командной строки под названием DUMPBIN.
существует три различных типа библиотек DLL под Windows:
классические библиотеки DLL, которые предоставляют все доступные функции в таблице экспорта библиотеки DLL. Вы можете использовать dumpbin.exe или зависит.exe из Visual Studio или бесплатно зависимость walker для изучения этих типов. Мэтт Pietrek написал много статей и утилит для рытья в Win32 PE файлов. Посмотрите на его классический статьи журнала MSDN. Библиотеки DLL C++, содержащие экспортированные классы будет экспортировать каждый метод в классе. К сожалению, он экспортирует искаженные имена, поэтому выход dumpbin практически нечитаем. Вам нужно будет использовать такую программу, как vc++_filt.exe в demangle выход.
com DLL, которые предоставляют COM-объекты. Эти библиотеки DLL предоставляют несколько регулярных экспортированных функций (DllRegisterServer и т. д.), которые позволяют системе COM создавать экземпляры объектов. Есть много утилит, которые могут смотреть на эти библиотеки DLL, но если они не имеют встроенного типа библиотеки, которые они могут быть довольно трудны для изучения. 4Developers есть ряд хороших инструментов COM / ActiveX
Edit: ссылка 4Developers не работает.
Идентификация функций в библиотеках DLL
Идентификатор функции DLL состоит из следующих элементов:
Имя функции или порядковый номер
Имя файла DLL, в котором находится реализация
Например, при указании функции MessageBox в библиотеке User32.dll определяется функция (MessageBox) и ее расположение (User32.dll, User32 или user32). Программный интерфейс Microsoft Windows (API Windows) может содержать две версии для каждой функции, обрабатывающей символы и строки: версию ANSI для однобайтовых символов и версию Юникода для двухбайтовых символов. Если кодировка не указана, она определяется полем CharSet (по умолчанию ANSI). Некоторые функции могут иметь более двух версий.
Неуправляемую функцию в коде можно переименовать, при условии что новое имя функции соответствует исходной точке входа в библиотеке DLL. Инструкции по переименованию неуправляемой функции DLL в управляемом исходном коде см. в разделе Указание точки входа.
Вызов неуправляемого кода позволяет управлять значительной частью операционной системы с помощью вызова функций в API Windows и других библиотеках DLL. Наряду с API Windows существует несколько других API и библиотек DLL, для которых доступен вызов неуправляемого кода.
В следующей таблице описаны несколько распространенных библиотек DLL в API Windows.
DLL | Описание содержимого |
---|---|
GDI32.dll | Функции интерфейса графических устройств (GDI) для вывода информации на устройство, например функции для рисования и управления шрифтами. |
Kernel32.dll | Низкоуровневые функции операционной системы для управления памятью и обработки ресурсов. |
User32.dll | Функции управления Windows для обработки сообщений, таймеров, меню и обмена данными. |
Как посмотреть содержимое dll
Т.к. разработчики линивые люди и не любят писать инструкции, то приходится самим разбираться и искать то, чего они не написали.
Часто бывают случаи, когда есть dll, мы догадываемся, что она что-то умеет делать, но не знаем, какие у нее есть экспортные функции и какие нужно передавать туда входные параметры. Или еще хуже, когда есть инструкция, все делаем по ней, передаем нужное количество параметров, а она нам ругается, что либо не хватает параметров, либо тип не соответствует. Можно искать ответа у разработчиков, но это может затянуться на очень длительное время.
Идем в Exсel и открываем Visual Basic сочетанием клавиш Alt+F11
Далее идем Tool->References, в открывшемся окне ищем нашу dll, если она уже регистрировалась в реестре, и отмечаем галкой, или же нажимаем кнопку Browse и указываем путь к dll, программа сама добавит ее и отметит галку, если данная dll имеет интерфейс. Нажимаем ОК.
Если выделить процедуру в правов окне, то увидим ее параметры и описание
К примеру, если создадим не
То получим много интересных возможностей.
Дерзайте, инструмент показал, дальше дело за вами.