有关 user32.dll 和 advapi.dll 的文档

有关 user32.dll 和 advapi.dll 的文档

我尝试反编译一个类似于键盘记录器的可执行文件,它引用了这两个我无法深入研究的 dll:

在此处输入图片描述

请问您知道在哪里可以找到有关这些的更多信息/文档吗?我指的是他们的 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 都是 Windows 自带的完全标准 DLL,并且都导出了大量函数。

一般来说,微软不会通过 DLL 分组来记录他们的 API;相反,在每个 API 的文档中,都会提到导出它的 DLL,以及 .lib 文件和 .h 文件。

例如,参见此引用对于 MessageBox 函数(来自 User32),或这个从 AdvApi32 获取 GetUserNameA。

一般来说,User32 包含帮助应用程序创建和实现标准 Windows GUI 的 API(即字符模式应用程序或服务进程可能不会使用其中的许多 API),而 AdvApi32 包含“更高级别”的基本 API 函数(“较低级别”位于 kernel32.dll 中)。

这些 DLL 不导出 C# 方法。它们导出可从 C/C++ 调用的函数。

但是,许多 C# 方法或多或少会直接与这些 Windows API 相对应。在大多数情况下,C# 方法会调用相应的 C/C++ API 来实现其功能(经过适当的参数处理等)。

如果您想要 DLL 导出的完整列表,我建议您使用可用的几种“依赖项遍历器”工具之一。微软显然在 2006 年左右停止了他们的开发;这里是一个较新的开源替代方案。如果你只是想查找一些东西,可以看看这里(但 Geoff 自 Windows 8 以来似乎没有更新过这些列表)。

相关内容