如何从托管c#代码中挂接本机Windows API?

时间:2012-05-06 09:55:24

标签: c# .net winapi pinvoke nt-native-api

我想使用以下原生API:

NtOpenProcess 
NtOpenThread 
NtReadVirtualMemory 
NtWriteVirtualMemory 
PsCreateSystemThread 
KiAttachProcess

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

1 个答案:

答案 0 :(得分:0)

您可以在声明之前使用原始参数声明NtOpenProcess,然后声明DllImport(“kernel32.dll”)(您可以将此方法用于任何dll /过程组合)。

就像这样:

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

这是一个explanation on MSDN

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

相关问题