日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

如何使用Appverifier ?

發(fā)布時(shí)間:2024/4/11 编程问答 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用Appverifier ? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

AppVerifier?特別用于檢測(cè)和幫助調(diào)試內(nèi)存損壞、危險(xiǎn)的安全漏洞以及受限的用戶帳戶特權(quán)問(wèn)題。AppVerifier?有助于創(chuàng)建可靠且安全的應(yīng)用程序,方法是監(jiān)視應(yīng)用程序與Windows操作系統(tǒng)的交互,并配置應(yīng)用程序使用的對(duì)象、注冊(cè)表、文件系統(tǒng)和?Win32?API(包括堆、句柄和鎖)。AppVerifier?還包括檢查,以便預(yù)測(cè)應(yīng)用程序在非管理員環(huán)境中的執(zhí)行情況。

1、 Appverifier原理

●?AppVerifier的原理是hook分配和釋放資源的API,在程序調(diào)用這些API時(shí)記錄信息,在程序退出時(shí)報(bào)告出未釋放的資源。

●?只能檢測(cè)Native代碼。

●?程序正常退出才行,強(qiáng)行殺進(jìn)程不能得到正確的報(bào)告。

●?基于原理,只能做Run-time檢測(cè)。盡量使用程序的所有功能已保證檢測(cè)到更多代碼。

2??Appverifier能識(shí)別的問(wèn)題

●?應(yīng)用程序正確地使用?API?的時(shí)刻:?

●?不安全的?TerminateThread?API。?

●?正確使用線程本地存儲(chǔ)(Thread?Local?StorageTLSAPI。?

●?正確使用虛擬空間操作(例如,VirtualAlloc?和?MapViewOfFile)。?

●?應(yīng)用程序是否使用結(jié)構(gòu)化的異常處理隱藏訪問(wèn)沖突。??

●?應(yīng)用程序是否試圖使用無(wú)效的句柄。??

●?堆中是否有內(nèi)存損壞或存在內(nèi)存問(wèn)題。??

●?應(yīng)用程序是否在資源不足的情況下用盡了內(nèi)存。?

●?是否正確使用了臨界區(qū)。??

●?運(yùn)行在管理員環(huán)境中的應(yīng)用程序在具有較低特權(quán)的環(huán)境中是否能良好運(yùn)行。?

●?當(dāng)應(yīng)用程序作為受限用戶運(yùn)行時(shí)是否會(huì)存在潛在的問(wèn)題。

●?在線程的上下文中,是否在將來(lái)的函數(shù)調(diào)用中會(huì)存在未初始化的變量。?

3、??AppVerifier如何使用

在AppVerifier中增加需要驗(yàn)證的應(yīng)用程序,對(duì)于開(kāi)發(fā)人員,直接選擇工程中輸出的Debug版的可執(zhí)行文件,可以添加多個(gè)文件,也可以添加動(dòng)態(tài)庫(kù)DLL。

AppVerifier大致可以驗(yàn)證異常、句柄、堆棧、內(nèi)存、未初始化參數(shù)等多個(gè)方面的隱患,選擇需要進(jìn)行測(cè)試的項(xiàng)目,并保存設(shè)置。

?? ? ?AppVerifier可以命令行也可以UI界面運(yùn)行,這里我們以UI界面運(yùn)行為例:

1)、打開(kāi)appverifier,選擇File--Add??Application添加應(yīng)用程序;

?

添加應(yīng)用程序完成后,需要在右方對(duì)話框選擇你想要驗(yàn)證的問(wèn)題:

1)Basic最基本的驗(yàn)證

●?Exceptinons?防止程序做這樣的操作,比如程序異常捕獲,以防止錯(cuò)誤繼續(xù)拋出。

●?Handles?檢測(cè)句柄錯(cuò)誤

●?Heaps?檢測(cè)內(nèi)存中的堆棧錯(cuò)誤

●?InputOutput?檢測(cè)讀寫(xiě)文件,讀寫(xiě)網(wǎng)卡數(shù)據(jù)等的錯(cuò)誤

●?Locks?檢測(cè)鎖使用情況,確定應(yīng)用程序是否正確的使用關(guān)鍵段

●?Memory??檢測(cè)應(yīng)用程序虛擬內(nèi)存使用情況

●?ThreadPool?監(jiān)控線程池使用,線程池的線程不應(yīng)該被應(yīng)用程序關(guān)閉

●?Tls?檢測(cè)線程局部存儲(chǔ)api是否被正確使用

2)Compatibility?兼容性問(wèn)題驗(yàn)證

●?Filepaths?檢測(cè)是否正常訪問(wèn)文件目錄

●?Highversionlie?驗(yàn)證應(yīng)用程序是否正確檢測(cè)windows版本

●?InterActiveservices?檢查一個(gè)程序是否運(yùn)行為可桌面交互的服務(wù),或者向可交互的用戶桌面發(fā)送過(guò)數(shù)據(jù)。這樣的應(yīng)用程序可能會(huì)引發(fā)嚴(yán)重的安全問(wèn)題。

●?KernelModeDriverInstall?檢測(cè)驅(qū)動(dòng)程序安裝

3)Low?resources?simulation?低資源情況下,如內(nèi)存將耗盡,程序是否能正常運(yùn)行。

4)Luapriv?檢測(cè)程序在標(biāo)準(zhǔn)用戶權(quán)限下是否能正常運(yùn)行

5)Miscellaneous

●?dangerousAPIs?檢測(cè)應(yīng)用程序是否使用了危險(xiǎn)的API,如TerminateThread

●?Dirtystacks??檢測(cè)應(yīng)用程序是否使用了未初始化的變量

●?TimeRoleOver?模擬使GetTickCount?and?TimeGetTime?APIs?返回的值比實(shí)際的大,即時(shí)間跑的更快的情況下,程序運(yùn)行是否正常。

6)Pringting

●?PrintAPI

●?PrintDriver

在選定了要驗(yàn)證的選項(xiàng)后,你會(huì)發(fā)現(xiàn)提示需要調(diào)試器配合,如何做呢?看下面:

1)首先安裝windbg,運(yùn)行windbg目錄下的gflags.exe,選擇image file標(biāo)簽,針對(duì)測(cè)試進(jìn)程掛上調(diào)試器,如下圖:?

?

OK,此時(shí)運(yùn)行測(cè)試進(jìn)程qqmusic.exe,會(huì)發(fā)現(xiàn)調(diào)試器已運(yùn)行,當(dāng)檢測(cè)到程序出現(xiàn)問(wèn)題,windbg將斷下來(lái),此時(shí)便可根據(jù)堆棧信息找到問(wèn)題。

總結(jié)

以上是生活随笔為你收集整理的如何使用Appverifier ?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。