C/C++編程筆記:那些鮮爲人知的"惡意代碼"(二)切記當心使用

惡意代碼的分類包括計算機病毒、蠕蟲、木馬、後門、Rootkit、流氓軟件、間諜軟件、廣告軟件、殭屍(bot) 、Exploit等等!上次咱們分享了惡意代碼的第一部分,如今咱們來分享剩下的部分,繼續來看看吧!編程

四、後門

後門常以套件的形式存在,用於將受害者信息發送給攻擊者或者傳輸惡意可執行程序(下載器),最經常使用的功能是接收攻擊端傳送過來的命令,執行某些操做。緩存

Windows系統中有不少WIN32 API能夠執行CMD命令,例如system Winexe CreateProcess等。這裏介紹經過匿名管道實現遠程CMD。微信

具體過程函數

一、初始化匿名管道的SECURITY_ATTRIBUTES結構體,調用CreatePipe建立匿名管道,獲取管道數據讀取句柄和寫入句柄。學習

二、初始化STARTUPINFO結構體,隱藏進程窗口,並把管道數據寫入句柄賦值給新進程控制檯窗口的緩存句柄。spa

三、調用CreateProcess函數建立進程,執行CMD命令並調用WaitForSingleObject等待命令執行完。線程

四、調用ReadFile根據匿名管道的數據讀取句柄從匿名管道的緩衝區中讀取數據。3d

五、關閉句柄,釋放資源。視頻

源代碼:blog

五、文件監控

全局鉤子能夠實現系統監控,Windows提供了一個文件監控接口函數ReadDirectoryChangesW該函數能夠對計算機上全部文件操做進行監控。在調用。

ReadDirectoryChangesW設置監控過濾條件以前,須要經過CreateFile函數打開監控目錄,獲取監控目錄的句柄,以後才能調用ReadDirectoryChangesW函數設置監控過濾條件並阻塞,直到有知足監控過濾條件的操做,ReadDirectoryChangesW纔會返回監控數據繼續往下執行。

具體過程

一、打開目錄,獲取文件句柄,調用CreateFile獲取文件句柄,文件句柄必需要有FILE_LIST_DIRECTORY權限。

二、調用ReadDirectoryChangesW設置目錄監控。

三、判斷文件操做類型,只要有知足過濾條件的文件操做,ReadDirectoryChangesW函數會立馬返回信息,並將其返回到輸出緩衝區中,並且返回數據是按結構體FILE_NOTIFY_INFORMATION返回的。

調用一次ReadDirectoryChangesW函數只會監控一次,要想實現持續監控,則須要程序循環調用ReadDirectoryChangesW函數來設置監控並獲取監控數據,因爲持續的目錄監控須要不停循環調用ReadDirectoryChangesW函數進行設置監控和獲取監控數據,因此若是把這段代碼放在主線程中則會致使程序阻塞,爲了解決主線程阻塞的問題,能夠建立一個文件監控子線程,把文件監控的實現代碼放到子線程中。

源代碼:

六、自刪除

自刪除功能對病毒木馬來講一樣相當重要,它一般在完成目標任務以後刪除自身,不留下任何蛛絲馬跡,自刪除的方法有不少種,常見的有利用MoveFileEx重啓刪除和利用批處理刪除兩種方式。

MoveFileEx重啓刪除

MOVEFILE_DELAY_UNTIL_REBOOT這個標誌只能由擁有管理員權限的程序或者擁有本地系統權限的程序使用,並且這個標誌不能MOVEFILE_COPY_ALLOWED一塊兒使用,而且,刪除文件的路徑開頭須要加上「\?\"前綴。

源代碼:

利用批處理命令刪除

del %0

批處理命令會將自身批處理文件刪除並且不放進回收站。

具體流程

1 構造自刪除批處理文件,該批處理文件的功能就是先利用choice或ping命令延遲必定的時間,以後纔開始執行刪除文件操做,最後執行自刪除命令。

2 在程序中建立一個新進程並調用批處理文件,程序在進程建立成功後,馬上退出整個程序。

源代碼:

和你們共勉!當心使用這些代碼仍是頗有幫助的哦~

另外若是你想更好的提高你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這裏或許能夠幫到你~

C語言C++編程學習交流圈子,QQ羣1090842465點擊進入】微信公衆號:C語言編程學習基地

分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!

編程學習書籍分享:

編程學習視頻分享:

相關文章
相關標籤/搜索