Я пытаюсь декомпилировать исполняемый файл, который является чем-то вроде 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 ответ1

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).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .