Есть ли встроенный просмотрщик функций экспорта DLL?

Есть ли бесплатный собственный просмотрщик функций экспорта Windows DLL, который показывает имя функции и список их параметров?

вы можете использовать Dependency Walker для просмотра имени функции. вы можете видеть параметры функции только в том случае, если они украшены. прочитайте следующее из FAQ:

Как просмотреть параметры и возвращаемые типы функции? Для большинства функций эта информация просто отсутствует в модуле. Формат файла модуля Windows предоставляет только одну текстовую строку для идентификации каждой функции. Не существует структурированного способа перечислить количество параметров, типы параметров или тип возвращаемого значения. Однако некоторые языки выполняют что-то, называемое функцией «украшение» или «искажение», которое является процессом кодирования информации в текстовую строку. Например, такая функция, как int Foo (int, int), закодированная простым декорированием, может быть экспортирована как _Foo @ 8. Значение 8 относится к числу байтов, используемых параметрами. Если используется декорация C ++, функция будет экспортироваться как: Foo @@ YGHHH @ Z, которая может быть напрямую декодирована до исходного прототипа функции: int Foo (int, int). Dependency Walker поддерживает упрощение C ++ с помощью команды Undecorate C ++ Functions.

dumpbin из командной строки Visual Studio:

C: \ Users \ Andrew \ src2011 \ cryptography \ cspsdk> dumpbin / exports csp.dll

Microsoft (R) COFF / PE Dumper Version 10.00.30319.01 Авторское право (C) Корпорация Microsoft. Все права защищены.

Дамп файла csp.dll

Тип файла: DLL

Раздел содержит следующие экспортные данные для CSP.dll

00000000 characteristics 3B1D0B77 time date stamp Tue Jun 05 12:40:23 2001 0.00 version 1 ordinal base 25 number of functions 25 number of names ordinal hint RVA name 1 0 00001470 CPAcquireContext 2 1 000014B0 CPCreateHash 3 2 00001520 CPDecrypt 4 3 000014B0 CPDeriveKey 5 4 00001590 CPDestroyHash 6 5 00001590 CPDestroyKey 7 6 00001560 CPEncrypt 8 7 00001520 CPExportKey 9 8 00001490 CPGenKey 10 9 000015B0 CPGenRandom 11 A 000014D0 CPGetHashParam 12 B 000014D0 CPGetKeyParam 13 C 00001500 CPGetProvParam 14 D 000015C0 CPGetUserKey 15 E 00001580 CPHashData 16 F 000014F0 CPHashSessionKey 17 10 00001540 CPImportKey 18 11 00001590 CPReleaseContext 19 12 00001580 CPSetHashParam 20 13 00001580 CPSetKeyParam 21 14 000014F0 CPSetProvParam 22 15 00001520 CPSignHash 23 16 000015A0 CPVerifySignature 24 17 00001060 DllRegisterServer 25 18 00001000 DllUnregisterServer 

Резюме

  1000 .data 1000 .rdata 1000 .reloc 1000 .rsrc 1000 .text 

DLL Export Viewer от NirSoft может использоваться для отображения экспортируемых функций в DLL.

Эта утилита отображает список всех экспортируемых функций и их адреса виртуальной памяти для указанных DLL-файлов. Вы можете легко скопировать адрес памяти требуемой функции, вставить ее в свой отладчик и установить точку останова для этого адреса памяти. Когда эта функция вызывается, отладчик останавливается в начале этой функции.

введите описание изображения здесь

Если у вас нет исходного кода и документации по API, машинный код есть все, вам нужно разобрать библиотеку dll, используя что-то вроде IDA Pro , другой вариант использует пробную версию PE Explorer .

PE Explorer предоставляет дизассемблер. Существует только один способ выяснить параметры: запустить дизассемблер и прочитать вывод parsingки. К сожалению, эта задача обратной инженерии не может быть автоматизирована.

PE Explorer поставляется с описаниями для 39 различных библиотек, включая основные библиотеки операционной системы Windows® (например, KERNEL32, GDI32, USER32, SHELL32, WSOCK32), ключевые графические библиотеки (DDRAW, OPENGL32) и другие.

alt text http://www.heaventools.com/img/tour2-2.gif

Не уверен в его списке параметров, но после плагина TotalCommander очень полезно.

  • Передача функций в качестве аргументов в Matlab
  • Как вы удаляете устройство из любого числа в SASS?
  • Вложенная функция в C
  • Как реализована функция квадратного корня?
  • Поддерживает ли Ninject Func (автоматически сгенерированный завод)?
  • Почему в параметрах C ++ последнее значение должно быть добавлено последними?
  • Как программно создать функцию R?
  • Могу ли я сделать функцию доступной в каждом controllerе в угловом?
  • Процедуры связанных типов передачи в качестве аргументов
  • Макро против функции в C
  • Разница между и * звездочкой
  • Давайте будем гением компьютера.