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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

开源一个自写的病毒技术工具集

發布時間:2025/3/20 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开源一个自写的病毒技术工具集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 前言
    • 界面
    • 代碼視圖
    • 功能介紹
      • 基礎技術
        • 防雙開
        • 釋放資源
      • 注入技術
        • 全局鉤子注入
        • 遠程線程注入
        • APC注入
      • 啟動技術
        • 三種方式創建進程
        • 內存加載運行dll
      • 自啟動技術
        • 注冊表
        • 快速啟動目錄
        • 計劃任務
        • 系統服務
      • 提權技術
        • 提升為Debug權限
      • BypassUAC
        • 查看當前進程權限
      • 隱藏技術
        • 進程偽裝
        • 傀儡進程
        • DLL劫持
      • 壓縮技術
        • 數據解壓縮
        • 文件解壓縮
      • 加密技術
        • HASH
        • AES加/解密
        • RSA加/解密
        • 實現原理
      • 功能技術
        • 進程遍歷
        • 文件遍歷
        • 桌面截屏
        • 按鍵記錄
        • 顯示CMD結果
        • U盤小偷
        • 文件監控
        • 自刪除
    • 說明

前言

前段時間一直在看Windows黑客編程技術詳解這本書,然后就想著與其一個例子一個例子的敲,倒不如把書上的例子寫成一個項目,作為一個集合,這樣既有利于面試 也方便以后代碼的復用。最后花了半個月的時間就有了下面的東西。

界面

用MFC寫的 界面有點low 不要在意這些細節。

代碼視圖

代碼的話放一個大概的類視圖 詳細的就不貼了實在是太多。


功能介紹

下面一一介紹每一個功能及其實現原理。

基礎技術

防雙開

使用最基礎的互斥體防雙開 函數寫在主程序。所以這個按鈕只是個象征性的東西。一直都是開啟的。

釋放資源

使用FindResourceW``SizeofResource``LoadResource和LockResource等API實現資源的釋放。

程序會在同級目錄下釋放后續功能測試所需的DLL。

注入技術

全局鉤子注入

使用Windows提供的SetWindowsHookEx將DLL注入到系統。測試DLL為MyHookDll.dll。可通過資源釋放技術釋放所需dll。也可自行編譯。HOOK的消息是WH_GETMESSAGE。dll中只寫了一個象征性的MessageBox。即拖拽dll點擊開始注入后,當系統中有任意進程接收到消息會彈出一個MessageBox。如果電腦中啟動的應用較多可能導致藍屏卡死等情況。

遠程線程注入

  • 拖拽TestDll.dll(使用資源釋放技術釋放)或者自行編譯
  • 輸入需要注入的進程ID
  • 點擊開始注入后會將測試DLL注入到目標進程 測試DLL只有一個MessageBox
  • 如果注入的進程權限較高或者檢測較嚴格(如QQ.exe) 則可能失敗
  • 實現原理

    使用ZwCreateThreadEx函數創建遠程線程 實現DLL注入。之所以沒有CreateRemoteThread是因為CreateRemoteThread函數內部是被CreateRemoteThread調用的。相對來說這個函數的權限會更高。

    APC注入

  • 拖拽TestDll.dll(使用資源釋放技術釋放)或自行編譯
  • 輸入需要注入的進程名
  • 點擊開始注入后會將測試DLL注入到目標進程 測試DLL只有一個MessageBox
  • 如果注入的進程權限較高或者檢測較嚴格(如QQ.exe) 則可能失敗
  • 實現原理

    通過QueueUserAPC把一個函數添加到指定線程的APC隊列中

    啟動技術

    三種方式創建進程

  • 任意拖拽一個exe到窗口,點擊按鈕后會使用三種不同的方式創建進程
  • 分別使用CreateProcess``ShellExecute和WinExec三種方式創建進程
  • 內存加載運行dll

  • 拖拽TestDll.dll(使用資源釋放技術釋放)
  • 點擊按鈕后程序會將TestDll模擬PE加載器加載到本程序內存后直接運行
  • 如果將DLL隱藏到資源可以不將DLL釋放到本地直接運行
  • 病毒WannaCry和BadRabbit都用了這種方式來運行自己的主邏輯程序
  • 自啟動技術

    注冊表

  • 拖拽任意exe到窗口
  • 點擊按鈕后會將程序的完整路徑寫到注冊表啟動項
  • 目標程序隨系統啟動而啟動
  • 可自行查看提示窗口的注冊表路徑進行查看或刪除
  • 原理:通過RegOpenKeyEx和RegSetValueEx將程序寫入到\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  • 快速啟動目錄

  • 拖拽任意exe到窗口
  • 點擊按鈕后會將程序的復制到系統的快速啟動目錄
  • 目標程序隨用戶登錄而自行啟動
  • 可自行查看提示窗口的快速啟動目錄路徑進行查看或刪除
  • 實現原理:使用SHGetSpecialFolderPath函數獲取windows系統中快速啟動目錄的路徑 然后,使用CopyFile函數,將想要自啟動的程序復制到快速啟動目錄下
  • 計劃任務

  • 此功能需使用管理員運行
  • 拖拽任意exe到窗口
  • 點擊按鈕后會將目標程序寫入到系統的計劃任務
  • 程序隨用戶登錄而啟動
  • 可自行在計劃任務中刪除添加的事件
  • 實現原理:調用COM組件將程序添加到計劃任務實現開機自啟動
  • 系統服務

  • 此功能需使用管理員運行
  • 拖拽ServiceExeTest.exe(服務應用程序 需自行編譯)到窗口
  • 點擊按鈕后會將ServiceExeTest.exe注冊為系統服務
  • ServiceExeTest.exe將會在后臺運行
  • ServiceExeTest.exe不含任何代碼 只是一個空的服務應用程序
  • 可自行使用任務管理器刪除
  • 實現原理:使用CreateService將編寫的服務應用程序注冊為系統服務實現開機自啟動
  • 提權技術

    提升為Debug權限

  • 此功能需使用管理員運行
  • 點擊按鈕后程序將當前進程提升為為Debug權限
  • BypassUAC

  • 首先將用戶賬戶控制設置為默認
  • 點擊按鈕后會繞過UAC的彈窗提升為管理員權限
  • 不彈窗開啟一個管理員權限的命令行
  • 實現原理:使用COM組件提權
  • 查看當前進程權限

  • 點擊按鈕后將在List控件上顯示當前程序的所有權限
  • 可使用此功能查看提升為Debug權限是否生效
  • 隱藏技術

    進程偽裝

  • 點擊按鈕后會將本進程偽裝為Explorer.exe
  • 本程序為32位 在32為系統下此功能才有效
  • 實現原理:使用NtQueryInformationProcess獲取進程環境塊。修改指定進程環境塊的進程路徑以及命令行信息,從而達到進程偽裝的效果。
  • 傀儡進程

  • 拖拽任意一個exe到窗口
  • 點擊按鈕后會將一段MessageBox的ShellCode注入到目標exe
  • 實現原理:修改某一進程的內存數據,向內存數據寫入Shellcode代碼,并修改該進程的執行流程,使其執行Shellcode代碼。這樣,進程還是原來的進程,但執行的操作卻替換了。
  • DLL劫持

  • 此功能沒有寫在界面上 需要自行手動操作
  • 我這里劫持的是FileCleaner2.0.exe的oledlg.dll
  • 找到DllHijackTest.dll(使用資源釋放技術釋放)或自行編譯
  • 將DLL重命名為oledlg.dll
  • 找到C:\Windows\SysWOW64目錄下的oledlg.dll將其重命名為Old_oledlg(如果無法重命名請自行百度解決方案)
  • 將oledlg.dll放到SysWOW64目錄下
  • 運行FileCleaner2.0.exe
  • 劫持的DLL在DllMian中寫了一個MessageBox函數 表示劫持成功
  • 實現原理:在PE加載器加載DLL時 使用自制的DLL替換掉原DLL ,在自制的DLL中轉發原DLL的導出函數并添加代碼
  • 壓縮技術

    數據解壓縮

  • 在文本框中輸入數據 點擊按鈕,即可對輸入的數據壓縮和解壓縮
  • 實現原理:通過Windows提供的RtlDecompressBuffer和RtlGetCompressionWorkSpaceSize實現對數據的解壓縮
  • 文件解壓縮

  • 拖拽文件到窗口,點擊按鈕 即可對文件進行壓縮和解壓縮
  • 使用ZLIB壓縮庫實現對文件的解壓縮
  • 加密技術

    HASH

    拖拽文件到窗口,點擊按鈕 即可求得文件的哈希值

    AES加/解密

    在數據窗口輸入數據 點擊按鈕 即可求得數據經過AES加解密后的值

    RSA加/解密

    在數據窗口輸入數據 點擊按鈕 即可求得數據經過RAS加解密后的值

    實現原理

    以上加解密都是使用Windows自帶的加密庫來實現的,使用的是cryptoAPI。

    功能技術

    進程遍歷

    對當前所有進程進行遍歷

    實現原理:使用Process32First和Process32Next

    文件遍歷

  • 對當前系統所有文件進行遍歷 可查看文件屬性和磁盤信息
  • 可查看文件屬性和磁盤信息 雙擊可進入下一層目錄
  • 實現原理:使用FindFirstFile和FindNextFile
  • 桌面截屏

  • 對當前屏幕進行截屏 截圖存放在程序同級目錄
  • 實現原理:通過GDI的方式實現屏幕畫面抓取
  • 按鍵記錄

  • 實現了一個鍵盤記錄器 記錄下所有的按鍵記錄
  • 按鍵記錄存儲在D盤下的log.txt
  • 實現原理:利用GetAsyncKeyState函數。該函數可以判斷按鍵狀態,根據是否為按下狀態來判斷用戶是否進行了按鍵操作,從而記錄
  • 之所以沒有用全局鍵盤鉤子和原始輸入模型是因為這兩種方式都有各自的限制,MFC實現起來不太容易
  • 顯示CMD結果

  • 在命令框輸入CMD命令 例如ping 127.0.0.0
  • 等命令執行完成會在數據窗口會顯示CMD命令的執行結果
  • 由于環境不一致 這個功能可能會執行失敗
  • 實現原理:使用命名管道進行進程通訊,從而獲得cmd的執行結果
  • U盤小偷

  • 在功能窗口此功能默認開啟
  • 對U盤的插入和拔出進行監控
  • 拷貝U盤里所有的.txt文件到程序的當前目錄下,如需拷貝其他文件則修改源碼
  • 實現原理:響應WM_DEVICECHANGE監控U盤,獲取盤符之后進行文件遍歷 即可拷貝所需要的文件
  • 文件監控

  • 對D盤上的文件操作進行監控
  • 實現原理:Windows提供了一個文件監控的接口函數ReadDirectoryChangesW,這個監控函數可以對計算機上的所有文件操作進行監控。
  • 自刪除

  • 點擊后程序將退出進程 并刪除自身
  • 實現原理:使用批處理
  • 說明

  • 本程序僅用于交流和研究,請勿用于其他用途。有任何后果與本人無關
  • 由于環境不一樣 所以不能保證每個功能在每臺機器上都是可行的。如果程序有bug還請多多體諒
  • 如果發現缺dll或者沒有測試文件的情況在工程項目下都可找到,可自行編譯。
  • 本程序編寫環境為W10 64 VS2017 最后附上源碼
  • Github地址:https://github.com/TonyChen56/HackerTools

    總結

    以上是生活随笔為你收集整理的开源一个自写的病毒技术工具集的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。