首页
社区
课程
招聘
[原创]APIMonitor(API监控工具,可替代SoftSnoop)--更新至1.3版,增加参数监控(2013-11-27)
发表于: 2013-11-4 00:51 64713

[原创]APIMonitor(API监控工具,可替代SoftSnoop)--更新至1.3版,增加参数监控(2013-11-27)

2013-11-4 00:51
64713
随着现在保护技术的进步,越来越多的程序面临着脱壳、反反调试、花指令、动态变形、虚拟机等多种多样的拦路虎,这些程序如果直接用OD,IDA进行反汇编调试分析会令人头疼不已,而采用黑箱分析的方法仍然有效 (所谓黑箱分析就是在不反汇编的情况下分析程序的运行情况,特别是API的调用情况和调用地址、参数)。个人用过SoftSnoop这个API监控工具,由于其采用附加调试的方式获取分析程序的信息,在面对现在众多的反调试程序面前显得有些乏力,同时该软件分析的信息全部堆在一个消息框里,当要监控的API较多时信息较为杂乱,不利于分析。针对SoftSnoop的一些不足,有了APIMonitor的诞生。

APIMonitor主要特点:
1、        APIMonitor的主要功能全部在Dll.dll这个动态连接库中,APIMonitor1.0.exe负责将其注入到要分析的进程,这样如果程序有反注入还可以用其他工具或方法注入进程,比如输入法注入、内核注入、LPC注入等等多种更牛B的注入方式,同时不怕程序反调试。

2、        APIMonitor采用Inline Hook的方式Hook进程中的任意Dll,可指定Hook某一API对其进行单独监控,也可选择整个Dll所有API进行监控。


3、        APIMonitor可对程序异常进行监控,比如SEH、VEH等,从而可以追踪程序采用SEH、VEH等技术进行的反调试。


4、        APIMonitor对API的监控信息全部通过表格排序分类显示,可清晰的知道API调用的地址、API名称、调用的模块、调用的次数,方便对程序进行分析,这些信息都可随时进行保存。

5、        APIMonitor还可作为一个注入工具使用,并支持拖拽,使用方便。


6、APIMonitor采用纯VC+SDK编写,程序精炼小巧,运行占用资源少。

7、        APIMonitor可选择是否对系统Dll对API调用进行监控,默认是不进行监控,以省去大量无用的信息

8、        APIMonitor可对API调用的参数进行监控,可以查看API的参数,如果API中的参数是字符串,则会直接显示出字符串,APIMonitor会保存最新调用的不同10条API调用的参数信息,同时可以自定义API参数信息。

注:APIMonitor的参数格式文件在“ParamTemplet”文件夹内,Name_Param = 参数名称,这个会在参数信息中 Type_Param = 参数的类型,0为默认,1为字符串,2为宽字符串,可自行修改或增加,也可用APIParamHandler将VC头文件中的API函数转化为APIMonitor显示参数所用的ini文件格式,免去手动输入的麻烦,APIParamHandler的源码我也一起发布了,地址在:http://bbs.pediy.com/showthread.php?p=1242979#post1242979

9、支持Win7

APIMonitor下一版改进:
1、        美化界面,界面一直不是我的强项。
2、        支持多种注入方法。
3、        改进Hook代码,尽可能减少不能用“Hook Dll”功能Hook的API
4、        其他建议欢迎跟帖,或发我消息

写过很多工具,第一次发布工具,希望这个工具能替代看雪网站上的监控工具SoftSnoop。

更新APIMonitor1.3:
1. 此版增加监控API参数的重要功能,可以查看API的参数,如果API中的参数是字符串,则会直接显示出字符串
2. 可自定义API参数
3. 增加"监控系统调用"选项,可选择是否显示系统的一些调用
4. 增加APIParamHandler程序,此程序可处理一些C语言版API头文件,转化为APIMonitor可识别的参数格式,欢迎大家测试,有问题跟贴反馈。


APIMonitor1.3下载: APIMonitor1.3.zip
增加了暂停监控键的模块,下载后覆盖原Dll.dll即可: Dll.zip
APIParamHandler: APIParamHandler.zip

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 3
支持
分享
最新回复 (83)
雪    币: 66
活跃值: (950)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不错,占位。。。。。
2013-11-4 01:22
0
雪    币: 85
活跃值: (51)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
只好板凳了,不知道程序是如何辨别API的?自带反汇编引擎还是只能分析系统API呢?
2013-11-4 01:27
0
雪    币: 85
活跃值: (51)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
还不错~~
2013-11-4 01:36
0
雪    币: 4560
活跃值: (1002)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
win7 x64测试监控XP版的NOTEPAD.EXE正常
东西不错收藏了
2013-11-4 01:59
0
雪    币: 441
活跃值: (149)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
留名,占位子,
2013-11-4 07:55
0
雪    币: 8719
活跃值: (2085)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
非常不错,赞一个!
2013-11-4 08:20
0
雪    币: 6
活跃值: (1125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
壳自加载dll的监控是个问题
2013-11-4 08:20
0
雪    币: 341
活跃值: (138)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
9
好东西哟。。
2013-11-4 08:25
0
雪    币: 659
活跃值: (499)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
10
程序会遍历进程中的模块,根据模块的输出表得到API的地址,所以任何加载的dll的输出函数都可以监控,但对于没有输出表的Dll(即没有输出函数的Dll)是不能进行监控的。
2013-11-4 08:48
0
雪    币: 659
活跃值: (499)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
11
也可以监控的,这个不只针对系统API,进程中加载的dll都可以监控,前提是这个dll得有输出表,且没有被加密或XX什么的
2013-11-4 08:50
0
雪    币: 11
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
保存信息的按钮怎么无效呢 或者保存到哪里去了 。。希望楼主能加上对 api 调用参数的监控
2013-11-4 08:56
0
雪    币: 659
活跃值: (499)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
13
HookRecord文件夹下,用“Hook Dll”功能未能成功Hook的API保存在注入进程文件夹下的UnHookAPI.txt中(这个我等会改改,也改到工具目录下好了)
2013-11-4 08:59
0
雪    币: 59
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
谢谢了  谢谢了 谢谢了
2013-11-4 08:59
0
雪    币: 319
活跃值: (1041)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
15
从图片上来看,好像只是看到调用次数。
希望未来某个版本能看到每次调用API的参数,那样就更实用了
2013-11-4 09:12
0
雪    币: 41
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
先收藏~~~
2013-11-4 10:07
0
雪    币: 659
活跃值: (499)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
17
参数获取不是很难,主要是还没想好怎么显示。
2013-11-4 10:43
0
雪    币: 110
活跃值: (308)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
不共享源码啊?
2013-11-4 11:34
0
雪    币: 8159
活跃值: (3321)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
做个记号收藏
2013-11-4 12:10
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
mark. 另通过输入法注入能讲解下吗
2013-11-4 12:51
0
雪    币: 230
活跃值: (106)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
试用下,谢谢分享!
2013-11-4 12:51
0
雪    币: 103
活跃值: (126)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
22
好东西 谢谢分享
2013-11-4 13:15
0
雪    币: 85
活跃值: (51)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
23
只能获取导出,对一些特殊的程序就无效了..支持楼主!~~提几点意见
建议利用反汇编引擎,动态解析并挂钩.
像楼上说的,基于动态解析出的调用并分析出参数,且跟踪出来源.
增加一些筛选的功能,比如,取两次调用次数做对比,筛选掉调用或者没被调用的函数
以上是拙见,希望楼主的程序原来越强大
2013-11-5 01:28
0
雪    币: 231
活跃值: (2631)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
24
顶楼上的……
2013-11-5 02:43
0
雪    币: 281
活跃值: (28)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
25
谢谢~~~
我也想写这么一个工具,procmon不好用,

现在看来不用了
2013-11-5 04:38
0
游客
登录 | 注册 方可回帖
返回
//