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


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

5 74

5 ответов:

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

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

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

C:\Users\Andrew\src2011\cryptography\cspsdk>dumpbin / экспорт csp.dll

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

дамп файла 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 by NirSoft может использоваться для отображения экспортированных функций в DLL.

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

enter image description here

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

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

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

alt текст http://www.heaventools.com/img/tour2-2.gif

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