Как узнать API функции DLL файлов? - PullRequest
1 голос
/ 16 декабря 2009

Есть ли способ получить все функции API (Экспорт) из файла DLL ?

Я знаю, что такие программы, как Depend s и PE Explorer могут это сделать, но ни одна из них не получает список аргументов.

Ответы [ 3 ]

5 голосов
/ 16 декабря 2009

Если экспортируемые функции не похожи на COM DLL или C ++ с манипулированием, информация просто не предоставлена ​​для аргументов. Обычно можно найти общий размер аргументов, и есть довольно приличный шанс, что деление на 4 даст что-то близкое к правильному числу, но помимо этого это сводится к ручному труду, читая код сборки, чтобы выяснить, как аргументы б.

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

Если они являются именами в C ++, то это будет зависеть от компилятора / набора инструментов, используемых для создания DLL. Например, если он был создан с помощью VC ++, вы можете использовать UnDecorateSymbolName() для получения полного имени и аргументов.

2 голосов
/ 14 июля 2014

Я предлагаю этот способ (с визуальной студией 2008 и Windows):

  1. открыть cmd
  2. перейти к

    C: \ ... "mvs9.0" \ VC \ Bin

  3. * Exec 1015 *

    Дампбин "nameOfDll" .dll / exports / out c: \ dumpbin.txt

  4. открыть файл dumpbin.txt

выглядит так

    ordinal hint RVA      name

      1    0 00001070 ??0CMpeg4Dec@@QAE@XZ
      2    1 000011A0 ??1CMpeg4Dec@@QAE@XZ
      3    2 00001000 ??4CMpeg4Dec@@QAEAAV0@ABV0@@Z
      4    3 00001130 ?CheckFrameType@CMpeg4Dec@@QAEHXZ
      5    4 00001100 ?DecodeFrame@CMpeg4Dec@@QAEHPAE@Z
      6    5 00001150 ?GetHeight@CMpeg4Dec@@QAEHXZ
      7    6 00001160 ?GetPicture@CMpeg4Dec@@QAEPAEXZ
      8    7 00001140 ?GetWidth@CMpeg4Dec@@QAEHXZ
      9    8 000010E0 ?InitDecoder@CMpeg4Dec@@QAEHPAE@Z
     10    9 00001120 ?ReleaseDecoder@CMpeg4Dec@@QAEHXZ

  1. 1032 * Exec *

    отменить ?? 0CMpeg4Dec @@ QAE @ XZ

вывод
Microsoft (R) C++ Name Undecorator
Copyright (C) Microsoft Corporation. All rights reserved.

Undecoration of :- "??0CMpeg4Dec@@QAE@XZ" is :- "public: __thiscall CMpeg4Dec::CMpeg4Dec(void)"
0 голосов
/ 16 декабря 2009

Для функций C ++ вы можете видеть аргументы (и некоторые другие свойства), а Зависит от может де-манипулировать dem). Для Си не повезло (связывание С не типизировано).

...