API Monitor 用于监控和分析 API 调用,能够呈现应用程序与系统接口之间的交互过程。该工具可记录 Win32 API 及第三方 API 的调用信息,涵盖函数名称、调用顺序、输入输出参数、返回值与错误代码等,便于开发人员判断程序运行状态。软件自带大量 API 原型和过滤配置,可迅速锁定需要查看的调用内容。它还支持断点设置与调用追踪,适用于软件调试、程序分析及开发测试等场景。

Windows 2000;Windows XP 32位版与64位 x64 版;Windows Vista 32位版与64位 x64 版;Windows 7 32位版与64位 x64 版;Windows 8 32位版与64位 x64 版
v2.0版本
1、保存捕获记录;
2、对Windows 8 Metro应用的运行状态进行监视;
3、查看异步 I/O;
4、可暂停监控与进程通知;
5、扩充了2500个API及500个COM接口;
6、改进便携版;
7、支持启动多个实例;
8、修复错误;
1、64位支持
API Monitor 的 64 位版本专用于监视 64 位程序与服务,32 位版本则仅能用于 32 位程序。若在 64 位 Windows 系统上需要监控 32 位应用,就得选用 32 位版本。该软件的 64 位安装包中其实同时打包了 64 位与 32 位两个版本。
2、摘要视图支持语法高亮显示
摘要窗口用于呈现 API 调用的相关信息,涵盖线程 ID、发起该调用的 DLL 名称,以及带语法高亮显示的调用参数与返回值;当调用未能成功时,窗口中同样会给出错误提示。

3、超过 13,000 项 API 定义与 1,300 余个 COM 接口
API Monitor 内置的 API 定义覆盖近 200 个 DLL 中的 13,000 多个 API,并涵盖 1,300 多个 COM 接口(Shell、Web 浏览器、DirectShow、DirectSound、DirectX、Direct2D、DirectWrite、Windows 图像组件、调试器引擎、MAPI 等)中的 17,000 多个方法。这些 API 按照 MSDN 所规定的类别与子类别归类整理。借助 API 捕获过滤器,用户可以自行选定需要监控的 API。

4、结构体、联合体、枚举与标志
API Monitor 能解析并展示超过 2000 种结构体与联合体、1000 余种枚举类型,以及 800 多种标志位;结构体内部的缓冲区和数组同样支持查看。


5、缓冲区视图
API Monitor 能够呈现输入与输出缓冲区的内容。具体展示多少数据,由 API 的其他参数或返回值自动推算得出,而可捕获的数据上限支持自行配置。以 ReadFile API 调用后的缓冲区为例:lpBuffer 的长度是依据调用完成后 lpNumberOfBytesRead 的取值确定的——此处返回值为 174,缓冲区便按这一长度显示。


6、调用树
API Monitor 通过调用树形式呈现 API 调用的层级关系。截图中展示的是一棵 CoGetClassObject 调用树,发起方为某个 Visual Basic 应用程序,该程序加载了 Microsoft Winsock ActiveX 控件。MSWINSCK.OCX 这个 ActiveX 控件在 DllMain 中调用了 WSAStartup 与 CreateWindowExA。

7、解码参数和返回值
参数与返回值都能以更易懂的形式呈现出来。从下方第一张截图可以看到常规状态,此时参数值保持原始样子;第二张截图则展示了解码之后的参数值。以 dwShareMode 为例,开启解码参数值功能后,API Monitor 不再显示 5,而是显示 FILE_SHARE_DELETE | FILE_SHARE_READ。该功能在参数面板与摘要面板中都能使用。


8、断点
API Monitor 让用户能够借助在 API 调用处设置断点的方式掌控目标程序的执行。断点的触发时机包括调用发生之前、调用结束之后、调用失败之际以及 API 抛出异常之时。调用前的断点使用户可以在参数送入 API 以前对其加以改动,也能直接跳过该调用并自行指定返回值与最后错误代码。调用后断点与错误断点则让用户在参数、返回值及最后错误代码交还给调用方之前完成修改。异常断点可用来捕获异常,避免目标程序出现可能的崩溃。全局断点同样能在 API 出错和异常时被触发。所有受支持的枚举数据类型与标志均具备完整的自动完成支持。

9、监控操作无需预先创建定义即可直接执行
API Monitor 现已支持对任意 DLL 中的任意 API 进行监控,无需事先编写 XML 定义文件。新增的外部 DLL 过滤器功能让用户能够按需增删 DLL。DLL 添加完成后,该过滤器与捕获过滤器运行方式一致,既可针对单个 API 勾选监控并设置断点,也能设定从这些 API 中抓取的参数个数。外部 DLL 过滤器支持存档至文件,便于根据目标应用程序加载不同的 DLL 组合。

10、进程内存编辑器
API Monitor 内置的内存编辑器可用于查看、编辑以及分配任意进程的内存空间,还能调整内存区域的保护属性。当程序处于断点状态时,借助该编辑器能够查看并修改目标进程中的缓冲区内容。在运行进程窗口里,对任意进程或服务点击右键,便可调出内存编辑器。

11、调用过滤
API Monitor 具备动态调用筛选能力,用户可依据设定条件对 API 调用进行隐藏或展示,筛选维度覆盖 25 个以上不同字段。举例来说,借助该筛选机制既能定位耗时超过 50 毫秒的调用,也能查看那些执行失败并返回错误代码 2 的 Unicode API 调用。

12、COM 监控
API Monitor 具备对 COM 接口的监控能力,DirectShow GraphEdit 所发起的 COM 方法调用可在其截图中呈现。

API Monitor 还能将 GUID、IID 以及 REFIID 解析出来,并以便于阅读的形式呈现。

13、解码错误代码
API Monitor 在 API 调用出现异常时,会借助对应的错误处理函数取得更详细的故障说明,可用的函数包括 GetLastError、CommDlgExtendedError 以及 WSAGetLastError。对于 NTSTATUS 与 HRESULT 两类错误码,该工具也能以更易读的形式呈现。截图中展示的情形是 APIconnect 调用未成功,API Monitor 通过 WSAGetLastError 取得错误码,并将错误码与错误描述一同用红色标注出来。

14、调用堆栈
API Monitor 能够捕获每一次 API 调用,并展示其对应的调用堆栈;下图即为 NtCreateFileAPI 调用堆栈的截图示例。

15、多种布局选项
这一版对图形界面做了彻底重做,同时加入了不少实用功能。除了若干预设布局可供挑选,用户也能自行搭建个性化布局。界面由多个可停靠窗口组成,涵盖“API捕获过滤器”“运行进程”“输出”“参数”“十六进制缓冲区”“调用堆栈”和“挂钩进程”。每个窗口均支持四种状态:停靠、浮动、隐藏或自动隐藏。
16、进程视图
运行进程窗口列出了可被挂钩的进程与服务,右键点击任意进程即可打开内存编辑器。

17、服务监控
可对 Windows 服务实施监控。下方截图展示的是 Print Spooler 服务在向 Microsoft XPS Document Writer 打印文档过程中所发起的调用。需要留意的是,启用服务监控的前提是当前用户账户具备相应权限(在 Vista 下需以管理员模式运行)。

18、线程
“已挂钩进程”窗口列出的是此前被挂钩以及当前正处于监控状态的进程。展开某个进程后,可以看到它包含的全部线程。其中,标注“M”的线程代表该进程的主线程,标注“W”的则是工作线程。处于非活动状态的线程以灰色呈现,图标上还会附带一个红色方块标记。每个线程均会显示自身的线程ID与起始地址。

(您的评论需要经过审核才能显示)
0条评论