当前位置: 首页 > news >正文

ApplicationVerifier介绍说明

文章目录

  • 1、介绍
  • 1、安装
  • 2、配置需要验证的项目
  • 2、在WinDbg中调试
  • 3、其他配置项

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不连续,停多次

相关文章:

  • 设计模式之组合设计模式
  • 【机器人建模和控制】读书笔记
  • go语言给结构体绑定方法
  • IP网络广播服务平台upload接口存在任意文件上传漏洞
  • 【网络安全】学过编程就是黑客?
  • java:网络编程
  • Excel和Word日常使用记录:
  • vscode从本地安装插件
  • 【未解决】everything软件 中文文件夹 查找不到
  • Web 基础——Apache
  • JAVA 的excel数据批量导入解析 现在都用什么API工具 Apache POI 、EasyExcel 、easypoi有什么区别
  • 结构者设计模式
  • Linux进程概念
  • 还不懂BIO,NIO,AIO吗
  • 命令模式(Command Pattern)
  • 因IBM裁员聊一聊外企程序员如何应对
  • 需求分析例题
  • STM32工程中各部分文件作用
  • 程序员卷技术前,先掌握这三种能力!
  • 企业出海网络方案,助力TikTok直播
  • KPL“王朝”诞生背后:AG和联赛一起迈向成熟
  • 宝通科技:与宇树合作已签约,四足机器人在工业场景落地是重点商业化项目
  • 十三届全国政协经济委员会副主任张效廉被决定逮捕
  • “犍陀罗艺术与亚洲文明”在浙大对外展出
  • 西甲上海足球学院揭幕,用“足球方法论”试水中国青训
  • 2025年4月份CPI环比由降转涨,核心CPI涨幅稳定