Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 跟踪windows API调用_.net_Python_Winapi_Trace_Etw - Fatal编程技术网

.net 跟踪windows API调用

.net 跟踪windows API调用,.net,python,winapi,trace,etw,.net,Python,Winapi,Trace,Etw,我目前正在使用.NET/Python中的一个工具来监视系统上的某些事件,如编写特定的注册表项或创建具有特殊名称的文件 我评估了许多可能性,因为我不必关心WinXP支持,所以我使用Windows事件跟踪来获取所有文件和注册表活动的实时流,这很好(通过使用NT内核记录器中的事件) 现在,我必须扩展我的工具来监视对某些Windows API函数的所有调用,如WriteProcessMemory,NtUnmapViewOfSection或VirtualAllocEx。我发现许多工具允许我跟踪单个进程中的

我目前正在使用.NET/Python中的一个工具来监视系统上的某些事件,如编写特定的注册表项或创建具有特殊名称的文件

我评估了许多可能性,因为我不必关心WinXP支持,所以我使用Windows事件跟踪来获取所有文件和注册表活动的实时流,这很好(通过使用NT内核记录器中的事件)

现在,我必须扩展我的工具来监视对某些Windows API函数的所有调用,如
WriteProcessMemory
NtUnmapViewOfSection
VirtualAllocEx
。我发现许多工具允许我跟踪单个进程中的所有API调用,但挂钩所有进程不是一个好主意,是吗

现在我想知道是否有可能为此使用ETW。内核是否提供了通知我API调用的提供者?如果没有,我还能做什么


摘要:如果我想捕获API调用,是否必须钩住每个进程?

一般来说,有两种方法可以拦截系统API调用;用户模式或内核模式拦截。对于用户模式API拦截,您必须钩住每个进程,以准确捕获/重定向每个调用到所需的API函数。内核模式拦截可以避免钩住每个进程,但也需要高级的底层知识(以及交叉签名的代码签名证书,以便在内核模式下运行代码)


有很多库可以提供API挂钩功能,但我相信我所知道的库主要在用户模式下工作,也就是说,需要将系统范围的DLL注入进程。

是否有任何内核模式驱动程序公开用户级API?我知道MadCodeHook和EasyHook都包含内核模式驱动程序并提供用户级API。其中任何一个都可能满足您的需求。我使用EasyHook实现了它,这正是我要搜索的。非常感谢。