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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/421407.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

53 - I. 在排序数组中查找数字 I

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof/%E9%9D%A2%E8%AF%95%E9%A2%9853%20-%20I.%20%E5%9C%A8%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E6%95%B0%E5%AD%97%20I/README.md 面试题 53 - I. 在排序数组中查找数字 …

Mysql基础练习题 1757.可回收且低脂的产品(力扣)

编写解决方案找出既是低脂又是可回收的产品编号。 题目链接: https://leetcode.cn/problems/recyclable-and-low-fat-products/description/ 建表插入数据: Create table If Not Exists Products (product_id int, low_fats ENUM(Y, N), recyclable …

mysql 之 information_schema

information_schema 是 MySQL 中的一个特殊数据库,它提供了关于 MySQL 服务器中所有数据库、表、列、索引、存储过程、函数、触发器等对象的元数据信息。information_schema 是一个只读数据库,主要用于查询数据库的结构信息,而不是存储用户数…

【网络安全】-文件上传漏洞

文件操作漏洞包括文件上传漏洞,文件包含漏洞,文件下载漏洞。 文章目录 前言 什么是文件上传漏洞? 文件上传的验证与绕过: 1.前端js验证:   Microsft Edge浏览器: Google Chrome浏览器: 2.后端…

[WEBPWN]BaseCTF week1 题解(新手友好教程版)

WEB A Dark Room 这道题的考点是查看网页源代码 网页源代码这里看到的是网页的html css js在用户浏览器上执行的代码 有时候很多铭感信息,或者关键信息。 查看网页源代码的几种方式 1 右键点击查看网页源代码 2 F12 3 Ctrl U 快捷键 HTTP是什么 HTTP&#x…

【F179】基于Springboot+vue实现的幼儿园管理系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 项目描述 系统管理也都将通过计算机进行整体智能化操作&#xff…

Redis学习Day3——项目工程开发`

扩展阅读推荐: 黑马程序员Redis入门到实战教程_哔哩哔哩_bilibili 使用git命令行将本地仓库代码上传到gitee/github远程仓库-CSDN博客 一、项目介绍及其初始化 学习Redis的过程,我们还将遇到各种实际问题,例如缓存击穿、雪崩、热Key等问题&…

IGNAV_NHC分析

extern int nhc(insstate_t *ins,const insopt_t *opt,const imud_t *imu)函数名 insstate_t* ins IO ins state insopt_t* opt I ins options imud_t* imu I imu measurement data return : 1 (ok) or 0 (fail) 用NHC进行约束,其实用NHC做量测去…

从大脑图谱/ROI中提取BOLD信号

动机 在功能连接(Functional Connectivity,FC)构建过程中,由于FC中元素数目是节点数目的平方关系,所以在计算FC之前进行数据降维是一个常见的选择。 一般会将体素级/顶点级BOLD信号(在2mm的图像分辨率下大脑…

Android libui新加接口,编译报错:error: Please update ABI references

1.背景信息 由于项目需要,要合入google的bug fix:https://cs.android.com/android/_/android/platform/frameworks/native/+/2c1782c6f986debe5ec89d5cdd3a3f08b08d5683 查看google的修改发现,对Transform.h 增加了一个方法:android::ui::Transform::det。合入修改之后,我…

NXP,S32K1XX汽车通用微控制器开发笔记

文章目录 1. 概述2. 开发环境配置2.1 S32 Design Studio2.2 安装SDK2.3 新建demo工程2.4 字体配置2.5 按需求修改demo2.5.1 修改pin脚定义2.5.2 增加串口打印功能2.6 编译代码2.7 debuger 配置参考1. 概述 S32K1系列32位微控制器(MCU)提供基于Arm Cortex-M的MCU,以及基本的…

pycharm中函数或方法的跳转以及返回

跳转 跳转很方便,ctrl 函数名即可。 跳转返回 有自带的回退按钮,找到视图->外观->工具栏,选中工具栏,这样就能出现箭头按钮,左箭头就是回退,右箭头前进。 快捷按钮可以为: 回退&…

Docker高级管理之compose容器编排与私有仓库的部署

Compose容器编排 Compose:容器的编排技术(可以管理多个容器),移植性、迁移性更强 查看使用的Compose的版本:docker-compose -v 首先创建一个编排文件 文件内容 compose文件格式: 缩进(严格意…

基于SpringBoot+Vue的房屋租赁管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的房屋租赁…

【Linux C | 终端设备】Linux下 tty、ttyS*、ttyAMA*、console 的区别,以及系统输出重定向(附带代码)

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰: 2024-09-11 …

RickdiculouslyEasy-CTF-综合靶场

步骤一:利用Goby搜索靶机地址 步骤二:访问靶机地址 步骤二:扫描端口 nmap 172.16.1.7 -p 1-65535 步骤三: 扫描目录 dirsearch -u http://172.16.1.7/ 第一个flag:命令:nmap -A -v -T4 172.16.1.7 -p 1-6…

RK3576芯片在智能家居里中型智慧屏产品的应用方案分析

智能家居在近年来得到了快速发展,AI技术不断发展,人机交互十分成熟,各种家电也都迎来了智能化浪潮,智能家居为人们提供了优秀的产品体验,受到主流消费者的青睐,智能家居里的中型智慧屏产品也随之兴起。 瑞芯…

2024最新盘点,主流生产报工软件有哪些?

本文将盘点知名的生产报工软件,为企业选型提供参考! 各位生产经理有没有碰到过这种情况,产品生产从工单-报工-质检-入库的过程中不能实时知道任务进度,生产日报也不清晰,老是被客户催,上头领导不满意&…

Netty权威指南:Netty总结-编解码与序列化

第四章 TCP粘包/拆包问题 4.1 TCP 粘包/拆包 TCP是流协议,也就是没有界限的的一串数据,底层并不知道上层业务数据的具体含义,也就是说一个完整的包可能会被拆分成多个包进行发送,也可能把几个小包封装成一个大的数据包发送。这就…

自注意力机制 SANS(论文复现)

自注意力机制 SANS(论文复现) 本文所涉及所有资源均在传知代码平台可获取 前言 在NLP模型领域中,seq2seq是一种常见的模型结构(序列到序列),其于 2013年、2014 年被多位学者共同提出,在机器翻译…