如何从托管 C# 代码挂钩本机窗口 API



我想使用以下本机 API:

NtOpenProcess 
NtOpenThread 
NtReadVirtualMemory 
NtWriteVirtualMemory 
PsCreateSystemThread 
KiAttachProcess

是否可以从托管 C# 代码挂钩这些 API?如果是这样,有人可以提供一个例子来说明如何做到这一点吗?

您可以使用原始参数声明 NtOpenProcess,然后在声明之前声明 DllImport("kernel32.dll")(几乎可以使用此方法任何 dll/procedure 组合)。

就像这样:

[DllImport("kernel32.dll")]
internal static extern int NtOpenProcess(IntPtr32 arguments...);

以下是有关 MSDN 的说明。

更新:实际上你想做的是可以从 C# 中实现的,但在C++的帮助下。如果要截获来自其他程序的 API 调用,更简单的方法是编写 API 拦截C++代码(使用本机 Windows 功能),然后将C++ DLL DllImport到 C# 应用程序中,仅执行来自 C# 代码的函数调用。

相关内容

  • 没有找到相关文章

最新更新