Ring0下的病毒診斷程式終於完成了

2021-04-15 15:20:45 字數 1114 閱讀 2233

程式原理:

使用ssdt hook來實現api的監管。對檔案,程序,記憶體(只針對寫,已經讀寫核心空間的函式) ,執行緒,驅動的載入進行了攔截以及一些常用的注入方式也進行了攔截。攔截函式列表如下:

zwcreatethread

zwsetcontextthread

zwterminateprocess

zwqueueapcthread

zwsetsysteminformation

zwloaddriver

zwsetinformationfile

zwreadfile

zwwritefile

zwcreatefile

zwopenfile

zwclose

zwcreatekey

zwdeletekey

zwdeletevaluekey

zwterminatejobobject

zwcreateprocess

zwwritevirtualmemory

由於偷懶目前還沒有進行使用者互動選擇,比如說建立了新的程序,

執行緒以及終止程序讓使用者選擇,還有日誌檔案並沒有直接寫入檔案

而是使用dbgview方式來察看,需要的可以把資訊匯出即可。

注意:由於是ring0下的東西最好還是在虛擬機器中測試,我不敢100%保證程式的穩定性。

如果你在使用中發現了什麼問題或者是一些建議可以聯絡我。

簡單說下使用方法:

先執行解壓出來的dbgview然後執行主程式viru**onitor然後你可以在路徑欄裡指定你需要分析的檔案,染確定即可分析,也支援拖放。一次只分析乙個檔案以及由它建立的所有子程序,主要是由於方便區分,要再次分析的先把程式退出即可。一但程式執行起請先不要把住程式退出,因為一退出程式會把驅動解除安裝。

Ring0 鍊錶

一般驅動層不使用資料結構,一般ring3層 雙向鍊錶可以將鍊錶形成乙個環.blink指標指向前乙個元素,flink指標指向下乙個元素.typedef struct list entry list entry,plist entry,restricted pointer prlist entry 初始...

ring0和ring3的區別

現在 核心程式和應用程式之間的本質區別。除了能用wdk編寫核心程式和閱讀一部分windows的核心 之外,我們還需要了解它們的本質是什麼,它們和我們熟悉的應用程式有什麼區別。intel的x86處理器是通過ring級別來進行訪問控制的,級別共分4層,從ring0到ring3 後面簡稱r0 r1 r2 ...

ring0 程序隱藏實現

最近在學習核心程式設計,記錄一下最近的學習筆記。原理 將當前程序從eprocess結構的鍊錶中刪除 無法被 process 0 0 看見 include hideprocess.h ifdef win64 define activeprocesslinks eprocess 0x188 define...