-2

我想使用以下原生 API:

NtOpenProcess 
NtOpenThread 
NtReadVirtualMemory 
NtWriteVirtualMemory 
PsCreateSystemThread 
KiAttachProcess

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

4

1 回答 1

0

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

像这样:

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

这是MSDN 上的解释

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

于 2012-05-08T06:08:56.227 回答