文档库 最新最全的文档下载
当前位置:文档库 › DebugApiSpy

DebugApiSpy

DebugApiSpy
DebugApiSpy

快速进入API函数监视器

一.运行新的跟踪监视进程

对一个新的进程进行API函数跟踪监视可以通过以下步骤进行。

1.启动DebugApiSpy.exe

2.选择【文件】-【创建新的进程】菜单,弹出【创建新进程】对话框。

在【创建新进程】对话框中输入准备跟踪监视的Exe文件名及启动参数。必要时

也可以指定运行路径。选择【确认】按钮。

3.系统就开始启动指定的程序,同时分析调用的DLL结构。

系统分析完进程关联DLL结构后,弹出【监视函数过滤器】对话框。

4.在【监视函数过滤器】对话框中选择希望监视的函数

5.选择【确认】按钮,进行监视。另外,在监视过程中也可以重新选择希望监视的函数。可以通过【工具】-【过滤器】菜单完成。

注:如果选择【取消】按钮,不能取消对进程的监视,只能取消刚才的选择操作

6.运行目标进程,当目标进程调用了在【监视函数过滤器】对话框中选择的监视函数

时,在监视画面中就可以看到监视结果。

7.在监视画面中选择监视的结果就可以得到调用该函数时的输入输出参数。画面中显示的结果表明GetOpenFileNameA函数被调用时显示3个参数。用户可以自己指定缺省输出多少个参数。可以在【工具】-【属性】菜单弹出的【属性】对话框中进行设置缺省参数个数以及每个参数的长度。

注:系统在缺省运行时的缺省参数个数为0,即不输出参数。用户可以随时通过【工具】-【属性】菜单进行设置。这里,缺省参数个数是指无论被监视的函数真正的参数个数是多少,都将输出相同的参数个数。这

些参数是指在函数调用时通过压栈时设置的。关于参数压栈的知识可以参考汇编语言的教程。

8.系统支持对函数的调用层次进行监视。

下图就显示了GetOpenFileNameA函数中调用了FindFirstFileA和FindNextFileA的

层次调用结构。

9.如果跟踪监视的目标函数有Debug信息时,在【源代码】窗口中将显示目标函数的源代码信息。该功能必须在运行目标程序前对【属性】对话框中选择【分析调试信息】。对已经进入监视状态的目标程序无效。(显示源代码功能只对VC编译的Debug版有效,对C++Builder的Debug版无效。其他工具的Debug版未确认)

二.监视运行中的进程

监视运行中的进程步骤如下:

1.启动目标进程

2.启动DebugApiSpy.exe

3.选择【文件】-【捕获运行中的进程】菜单,弹出【进程列表】对话框。

选择目标进程。

4.选择【确定】按钮,系统将对目标进程进行分析DLL,分析完成后显示【监视函数过滤器】对话框。

5.再以后的操作就和[运行新的跟踪监视进程]的第3步以后的工作一样了。

三.其它

其它功能:

1.对多线程调用的时间顺序显示,可以轻松调查多线程的调用结果。

2.对函数的输入输出结果可以通过PlugIn程序进行定制,如上图就对Wsocket函数send和recv函数进行了定制,输出结果就不再是param[0],param[1]啦。另外,如果输入输出参数是指针或结构体甚至可以级联,都可以通过plugin的定制方法得到输入输出结果。详细可以参考sample中关于winsock函数的定制代码。生成的定制dll文件将后缀名改为dbg,将该plugin定制文件copy至plugin目录就可以实现对指定函数的输入输出结果定制了。由于目标是跟踪监视,就不能对目标函数的输入输出值进行修改操作。

3.支持Win9X/NT/W2K/XP等Windows平台。

4.进行监视API调用时对目标程序的运行速度和性能有一定的影响。当被跟踪的函数频繁调用时影响比较明显。

注意事项:

1.不要跟踪资源管理器,因为资源管理器是操作系统的界面,一不小心会导致不可预测的结果。

2.不要同时选择过多的API函数,因为采用调试方式监视API,过多的调试中断会导致目标进程性能下降。只选择自己感兴趣的API函数就可以了。

相关文档