从编程角度查找对 windows api 的所有调用

Finding all calls to windows api from a programming perspective

我想开发一个程序来检测对某些 Windows API 函数的调用,并简单地记录调用过程、调用计数以及它们的参数,以便稍后将它们标记为良性或恶意。

GUI 程序 API 监视器是我试图实现的功能的一个很好的例子。理想情况下,我想单独跟踪每个所需的 API 函数,并在使用时或之后获取调用方 PID 和参数,而无需用户输入。该程序应该能够 运行 在任何 windows 7 机器上,但可以限制为 32 位应用程序。

我知道有几种挂钩函数的方法,据我了解,Microsoft detours 实现了其中一种方法,但我不知道它是否最适合我想做的事情。我见过弯路、easyhook、deviare API hook 和其他在非常老的帖子中提到的,但我很难理解它们的区别和特点。

所以我的问题是,考虑到我正在尝试做的事情,您有什么建议以及为什么?

作为参考,我是一名中级程序员,但是 Windows 编程的初学者。

感谢您的帮助

我是 Nektra Deviare API Hook 团队的一员。我们的挂钩引擎被世界各地的大量公司用于不同类型的最终用户产品(例如:防病毒、数据丢失防护、人工智能、残障软件、数据分类、应用程序虚拟化)。 Deviare-InProc 是 MS Detours 的替代品,Deviare2 内置了所有你需要挂钩另一个进程并在你自己的进程中调用的 RPC。

我们不断修复所有报告的问题。您可以在我们的 GitHub 中验证它: https://github.com/nektra/Deviare2 https://github.com/nektra/Deviare-InProc

你可以在 Nektra 的 SpyStudio API Monitor 中看到 Deviare2 运行。

Detours 是一款出色的软件,但非常昂贵(1 万美元)。除此之外,它完全缺乏支持。它可以与 Deviare InProc 进行比较,

EasyHook 曾经是一个很好的起点,因为它是唯一的免费选项。但是,现在 Deviare2 系列是开源的,EasyHook 在现实世界中存在很多稳定性问题。