2011-03-21 54 views
1

假设一个程序做了一个操作系统函数调用,我必须拦截它如何完成它?如何拦截操作系统函数调用

+3

拦截以什么方式? – Cameron 2011-03-22 00:02:23

+1

假设一个程序打电话来运行notpade,那么我必须拦截这个程序的电话 – jams 2011-03-22 00:09:56

+0

@jams:拦截_which_电话?打电话跑记事本? – 2011-03-22 00:16:12

回答

3

无法直接在C#中挂接API,操纵堆栈帧需要机器代码。然而,有一个非常受欢迎的库,可以从C#程序EasyHook下载,下载is here。源代码可用,以防你想知道它是如何工作的。

+0

“支持32位和64位内核模式挂钩”令人印象深刻! – Gabe 2011-03-22 00:32:39

1

您需要创建一个钩子。在非托管代码中,您应该可以使用Detours。请检查出EasyHook,因为您需要在C#中执行此操作。关于The Code Project的文章解释了如何使用它。