ApplicationVerifier介绍说明

1、介绍

AppVerifier 特别用于检测和帮助调试内存损坏、危险的安全漏洞以及受限的用户帐户特权问题。
AppVerifier 有助于创建可靠且安全的应用程序,方法是监视应用程序与Windows操作系统的交互,并配置应用程序使用的对象、注册表、文件系统和 Win32 API(包括堆、句柄和锁)。
官方文档:https://docs.microsoft.com/zh-cn/previous-versions/aa480483(v=msdn.10)?redirectedfrom=MSDN#E3AA

1、安装

下载ApplicationVerifier.xx.msi进行安装

2、配置需要验证的项目

1)打开appverifier,选择File–Add Application添加应用程序,之后点击Save按钮;对于开发人员,直接选择工程中输出的Debug版的可执行文件,可以添加多个文件,也可以添加动态库DLL。
在这里插入图片描述

2)选择测试属性
在这里插入图片描述

Basic基本验证项说明

名称说明
Exceptinons防止程序做这样的操作,比如程序用异常捕获,以防止错误继续抛出。
Handles检测句柄错误
Heaps检测内存中的堆栈错误
leak应用程序是否在资源不足的情况下用尽了内存
Locks检测锁使用情况,确定应用程序是否正确的使用关键段
Memory检测应用程序虚拟内存使用情况
SRWLock检测读写锁使用是否正确
ThreadPool监控线程池使用,线程池的线程不应该被应用程序关闭
TLS检测线程局部存储api是否被正确使用

3)选择Tests下的某一项测试验证项,右键弹出属性和停止验证选项
在这里插入图片描述
属性页如下:
在这里插入图片描述
停止验证选项页如下:
在这里插入图片描述
点击对应的Verifier stop值,在下方的Description中会出现该停止码的描述说明
也可通过下面步骤或按住F1键打开帮助文档查看停止码描述
在这里插入图片描述

4)Appverify有2组属性,一组是测试验证项属性,一组是应用程序属性

名称说明
Name针对每个属性的唯一名称
TypeBoolean、DWORD、String 和 MultipleString
Value基于类型变化的可更改元素
Description该描述解释属性的内容

双击应用程序属性不可修改,双击测试验证项属性可修改
在这里插入图片描述

应用程序属性如下:
在这里插入图片描述

名称类型描述
PropagateBooleanFALSE将验证器设置从父进程传播到子进程。注意,并非所有测试都可以传播。False(不选中该框)不传播这些设置,而 True(选中该框)则传播这些设置
AutoClrBooleanFALSE当指定的图像开始运行之后,验证的图像将清除自己的设置。False(不选中该框)不进行此操作;True(选中该框)则进行此操作
AutoDisableStopBooleanTRUEAppVerifier 对于一个错误将只解释一次。如果再次发现该问题,它不会生成错误。False 在每次发现问题时都将生成错误。True 将只生成一个错误
LoggingWithLockBooleanTRUE将记录 dll 加载/卸载事件。验证器在加载器锁处于保持状态时进行 I/O。这可能会挂起应用程序。False 不会记录该事件,而 True 将记录该事件
ExceptionOnStopBooleanFALSE对于每个验证者报告的停止,将引发异常而不是调试中断
MinimumMemoryOverheadBooleanFALSE通过禁用一些仅用于调试的特性来减少内存开销

2、在WinDbg中调试

准备好exe和对应的pdb,这里不做详细说明
若进程有异常,AppVerifier或向windbg调试器发出的异常情况可根据停止码与错误原因判断异常类型
获取停止码:
1)方式1
在这里插入图片描述

2)方式2
打开appverifier界面,查看Logs页面
在这里插入图片描述
在这里插入图片描述
找出Error值非0的日志进行保存"Save As"到指定目录,到目录打开xml文件
在这里插入图片描述

3、其他配置项

1)勾选Inative,在调试时会得不到任何停止码的调试信息
在这里插入图片描述
2)严重程度调整为Warning
在这里插入图片描述
当发现异常的时候,在Logs中查看Warning会变成1
在这里插入图片描述
查看日志,多了Severity参数
在这里插入图片描述
其他的不做说明
3)日志记录选项说明

名称说明
severity严重程度,以下严重程度依次增加,error严重程度最大
ignore忽视,严重程度可以忽视,此影响对程序的影响可以忽略
information输出提示信息;消息在粗粒度级别上突出强调应用程序的运行过程。
warning输出警告信息;表明会出现潜在错误的情形
Error输出错误信息;指出虽然发生错误事件,但仍然不影响系统的继续运行
error reporting错误报告
Log to File将日志记录进文件中
Log Stack Trace记录回溯信息,此选项记录前提是Log to File记录
No Break不间断
Exception异常
BreakPoint断点
miscellaneous混杂选项
stop Once停一下
Not Continuable不连续,停多次
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值