Документация о 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).