跟踪所有进程的 Windows API 调用

Posted

技术标签:

【中文标题】跟踪所有进程的 Windows API 调用【英文标题】:Tracing Windows API calls over all processes 【发布时间】:2015-07-11 12:03:20 【问题描述】:

我正在尝试编写一个应用程序,该应用程序将对 所有正在运行的进程(以及在我的应用程序启动后创建的进程)的某些函数和 Windows API 的 DLL 的使用进行静态分析)。

在网上搜索后,我发现了几个可能有帮助的工具——例如WinAPIOverrideEasyHookProcMon,它们使用不同类型的钩子。不幸的是,在我看来,他们无法完全满足我的需求:WinAPIOverrideEasyHook 只能挂钩应该选择的某些进程,而ProcMon 没有我可以使用的接口跟踪我需要的 API 调用。

我还想知道这种挂钩是否可以与 Python 代码或至少 C# 环境交互。

我想听听一些关于如何做到这一点的建议。

【问题讨论】:

有一个procmon钩子,2秒 我该如何使用它? 【参考方案1】:

这篇文章可能不是你想要做的事情的圣杯,但肯定会让你在你的追求中走得更远:

http://www.codeproject.com/Articles/2082/API-hooking-revealed

我不能 100% 确定那是我想要利用 ProcMon 的文章。经过进一步研究,我很确定我正在考虑的是 EasyHook:http://www.codeproject.com/Articles/27637/EasyHook-The-reinvention-of-Windows-API-hooking

ETW 也可能是另一种调查途径:http://www.codeproject.com/Articles/570690/Application-Analysis-with-Event-Tracing-for-Window

【讨论】:

以上是关于跟踪所有进程的 Windows API 调用的主要内容,如果未能解决你的问题,请参考以下文章

使用windows api堆栈跟踪另一个进程c

win32 API 笔记1

利用win32 api实现进程通信---通过剪切板

使用 ETW 的 Windows 用户模式进程系统调用跟踪

windows api 钩子函数

win32 api是啥