Документация о user32.dll и advapi.dll

Я пытаюсь декомпилировать исполняемый файл, который является чем-то вроде key-logger, и он ссылается на эти 2 библиотеки, в которых я не могу развернуть:

Любая идея / помощь, пожалуйста, где найти больше информации / документации об этом? Я имею в виду их контракты API.

ОБНОВИТЬ:

Трудно определить, какие его методы вызываются, потому что в декомпилированном коде есть такой код:

[DllImport("user32.dll", CallingConvention=CallingConvention.StdCall, CharSet=CharSet.Auto)]
public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
public void Start()
{
    if (hKeyboardHook == 0)
    {
        this.KeyboardHookProcedure = new HookProc(this.KeyboardHookProc);
        hKeyboardHook = SetWindowsHookEx(13, this.KeyboardHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
        if (hKeyboardHook == 0)
        {
            this.Stop();
            throw new Exception("SetWindowsHookEx ist failed.");
        }
    }
}

Взгляните на следующую строку: Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0])

У него нет имени метода явно...

Вот почему я пытаюсь угадать

1 ответ

Решение

И advapi32.dll, и user32.dll - это полностью стандартные библиотеки DLL, которые поставляются с Windows. И оба экспортируют множество функций.

В общем, Microsoft не документирует их API, группируя их по DLL; скорее, в документации по каждому API будет указана DLL, которая его экспортирует, а также файл.lib и файл.h.

Например, см. Эту ссылку для функции MessageBox (из User32) или эту ссылку для GetUserNameA из AdvApi32.

В общем, User32 содержит API, которые помогают приложению создавать и реализовывать стандартный графический интерфейс Windows (т. Е. Приложение в текстовом режиме или процесс обслуживания, вероятно, не будут использовать многие из них), а AdvApi32 содержит базовые функции API "более высокого уровня" ("нижний уровень" находится в kernel32.dll).

Эти библиотеки не экспортируют методы C#. Они экспортируют функции, вызываемые из C/C++.

Однако многие методы C# будут более или менее соответствовать этим API-интерфейсам Windows. В большинстве таких случаев метод C# будет вызывать соответствующий API C / C++ для реализации своей функции (после массирования соответствующих аргументов и т. Д.).

Если вы хотите получить полный список того, что экспортирует DLL, я предлагаю вам использовать один из нескольких доступных инструментов "обхода зависимостей". Microsoft, по-видимому, остановила их разработку примерно в 2006 году; Вот более свежая альтернатива с открытым исходным кодом. Если вы просто хотите что-то посмотреть, посмотрите здесь (но Джефф, похоже, не обновлял эти списки после Windows 8).

Другие вопросы по тегам