簡體   English   中英

C ++中的內存掃描

[英]Memory Scan in c++

我正在Visual Studio 2010中從事WIN32項目 我正在嘗試通過ClamAV(開源防病毒)引擎掃描主內存,以在主內存中搜索惡意/感染文件。

我到目前為止編寫的代碼通過使用Windows函數CreateToolhelp32Snapshot創建整個主內存的快照。

然后,我從快照中打開一個特定的進程,並將其傳遞給ClamAV引擎,然后該引擎確定它是否是惡意的。 我每10秒重復一次整個機制。 但是我認為這不是一種有效的方法,

我想要做的是掃描我的整個內存一次,然后我僅掃描那些在主內存中新創建的進程。 請指導我,有什么方法可以僅從內存而不是整個內存中獲取新創建的方法

我認為這不能完全在用戶空間程序中完成。 我對Windows API不太熟悉,但是我可以給您一些大概的提示。

  1. 您應該執行每個程序之前對其進行掃描。
  2. 使所有內存成為以后分配的程序不可執行 (NX位)
  3. 該程序在嘗試執行時將觸發頁面錯誤,請立即掃描!
  4. 將掃描的內存設為只讀 ,然后繼續執行
  5. 一旦程序嘗試寫入此區域,請使其再次不可執行

注意:如果要確保安全性,則永遠不能使存儲區同時變為可執行和可寫狀態。

這樣,您只需要檢查那些正在執行的內存即可。 而且它應該非常有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM