SoftSnoop(API监控工具) v1.3.2中文绿色版

SoftSnoop实际上是一款捕获进程调用的Api的程序,能够有效的捕获静态进程调用的Api的程序,仔细的观察所有的数据和资料,方便用户在操作的同时更加方便!由于软件是通过修改目标进程的输入表的方法来实现的,对加过壳的程序和修改了输入表的程序是无法进行捕获的,但能够捕获静态进程就足以满足所有用户,需要的朋友可以下载试试!
如果想让SoftSnoop显示自己感兴趣的Api参数,还可以通过压缩包内提供的SS.txt文档,里面包含了如何设置和操作的一切方法!
如果只想捕获特点模块或特定的Api,或者只想捕获来自某些特定模块的Api,请在选项窗口进行设置;其它使用方法都很简单,界面上一目了然,也不用多说了
SoftSnoop

更新日志

SoftSnoop v1.3.2新增
1、可以捕获从任一模块产生的到任一模块的Api调用,包括动态加载的模块;可以在调用Api之前输出Api名称,Api所属模块,Api参数及调用这个Api的地址;可以在Api返回之后输出Api返回值;
2、可以像OllyDbg那样附着到正在运行的目标进程并捕获其Api,可以随意终止和继续捕获,目标进程不受影响;
3、可以选择是否对目标进程进行调试,对一些检查调试器的程序可以选择不调试目标进程,对Api捕获没有影响;由于修改了ApiHook方式,因此对于加过壳或修改了输入表的程序也可以进行Api捕获;
4、添加了中文版;
5、解决了1.3版中在加载目标进程时偶尔会产生内存访问越界的问题;

实现原理介绍

SoftSnoop的ApiHook是通过修改目标进程的输入表的方法来实现的,这种方法的优点在于实现简单,但缺点在于无法捕获动态加载的模块中的Api,另外对于加过壳的程序和修改了输入表的程序也是无效的。
另一种应用层的ApiHook方法是修改目标Api的前几条指令为跳转指令,当产生Api调用时先跳到我们的程序,我们处理之后再跳回去继续执行;这种ApiHook的实现方法在这里有详细的介绍:http://中的ScanModules()函数,大家如果感兴趣可以看看;
(2)对于扫描得到的每个模块,通过读取其输出表来获得其输出的Api的入口地址和名称,然后将这些Api添加到待Hook列表中;
对于问题2,分两种情况进行介绍:
(1)由SoftSnoop创建的目标进程,通过在修改其输入表来实现其加载我们的ApiSnoop.dll,修改时机是目标进程已经被加载到内存中但还没有执行的时候,具体实现方法是创建目标进程时加CREATE_SUSPENDED参数,然后修改其输入表,把我们的ApiSnoop.dll加进去,然后让目标进程继续执行,这样我们的ApiSnoop.dll就会被加载到目标进程的地址空间;这里要说明的是,SoftSnoop1.3版使用的方法没有公开源码,是封装在ForceLibrary.dll里的,其缺点在于必须对目标进程进行调试才能实现加载ApiSnoop.dll,恰好Detours库中提供了DetourCreateProcessWithDll()函数能够实现这个功能,因此我就直接使用了这种方法;
(2)附着到正在执行的目标进程http://www.168ftp.com/,通过CreateRemoteThread实现让目标进程加载我们的ApiSnoop.dll;
其它一些问题的实现方法是:Api调用的参数和来源地址可以通过读堆栈得到,至于如何让Api返回时执行我们的代码从而获得其返回地址,我沿用了1.3版的实现方法:修改堆栈中的返回地址。
另外1.3版里主程序和SoftSnoop.dll是通过消息进行交互的,这种交互只能是单向的,在1.3.2版里我使用了事件+内存映射文件的方法实现了双向交互
收起介绍展开介绍
  • 下载地址

发表评论

您的评论需要经过审核才能显示!