熊貓燒香病毒之專殺工具編寫教程方案_第1頁
熊貓燒香病毒之專殺工具編寫教程方案_第2頁
熊貓燒香病毒之專殺工具編寫教程方案_第3頁
熊貓燒香病毒之專殺工具編寫教程方案_第4頁
熊貓燒香病毒之專殺工具編寫教程方案_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、熊貓燒香病毒之專殺工具的編寫教程通過對熊貓燒香的行為分析, 這里僅針對所得結(jié)果, 來進行專殺工具的編寫。 本節(jié)課我 們會學(xué)習(xí)使用 C+ 來寫一個簡單的 “熊貓燒香 ”專殺系統(tǒng)。實驗?zāi)康模航Y(jié)合本篇文章的知識點,能夠徹底掌握文章所講述的編寫殺毒軟件的方法。實驗思路:1. 理解專殺工具所需要實現(xiàn)的功能2. 利用 VC+編寫專殺工具3. 結(jié)合 Process Monitor 驗證專殺工具實驗步驟:1、病毒行為回顧與歸納這里我們首先回顧一下病毒的行為:* 病毒行為 1: * 病毒本身創(chuàng)建了名為 spoclsv.exe 的進程,該進程文件的路徑為:C:WINDOWSsystem32driversspocl

2、sv.exe* 病毒行為 2: * 在命令行模式下使用 net share 命令來取消系統(tǒng)中的共享。* 病毒行為 3: * 刪除安全類軟件在注冊表中的啟動項。* 病毒行為 4:*在注冊表 :HKCUSoftwareMicrosoftWindowsCurrentVersionRun 中創(chuàng)建 svcshare用于在開機時啟動位于 C:WINDOWSsystem32driversspoclsv.exe 的病毒程序。* 病毒行為 5:* 修改注冊表, 使得隱藏文件無法通過普通的設(shè)置進行顯示, 該位置為:HKLMSOFTWAREMicrosoftWindowsCurrentVersionExplorer

3、AdvancedFolderHiddenSHOWALL病毒將 CheckedValue 的鍵值設(shè)置為了 0。* 病毒行為 6:* 將自身拷貝到根目錄, 并命名為 setup.exe ,同時創(chuàng)建 autorun.inf用于病毒的啟動,這兩個文件的屬性都是“隱藏”。* 病毒行為 7: * 在一些目錄中創(chuàng)建名為 Desktop_.ini 的隱藏文件。* 病毒行為 8: * 向外發(fā)包,連接局域網(wǎng)中其他機器??v觀以上八點行為, 這里需要說明的是, 其中的第二點行為, 由于我不知道用戶計算機 在中毒前的設(shè)置, 因此這條我打算忽略。 第三點行為, 我不知道用戶的計算機安裝了哪些殺 毒軟件, 而病毒又會將所有

4、殺軟的注冊表啟動項刪除, 所以這一條我打算忽略, 用戶在使用 本專殺工具后, 可以自行重新安裝殺軟, 或者有經(jīng)驗的用戶也可以自行在注冊表中添加回殺 軟名稱。另外,病毒的第八點行為,我也打算忽略,因為只要刪除了病毒本體,那么自然就 解決了這個問題, 所以我的專殺工具主要應(yīng)付剩下的五個問題。 在這里各位讀者想必也能夠 發(fā)現(xiàn), 我的專殺工具所要做的工作, 與我之前寫的手動查殺的過程其實是極為相似的, 這也 是為什么我當(dāng)時就強調(diào),我們依舊要掌握手動查殺病毒這個技能的原因。2、專殺工具界面的制作如果使用批處理來殺毒,因為它運行時沒有界面,因此我們往往不知道殺毒程序究竟 干了些什么, 也不知道究竟有沒有查

5、殺成功, 這也凸顯了使用高級語言開發(fā)專殺工具的優(yōu)勢。 這里我使用 MFC 進行 “熊貓燒香 ”病毒專殺工具的開發(fā),繪制界面如下圖所示:其中的 “Edit Box 控”件的屬性調(diào)整如下:界面非常簡單,接下來就是代碼的編寫。3、計算病毒程序的散列值在查殺病毒的技術(shù)中有一種方法類似于特征碼查殺法,這種方法并不從病毒內(nèi)提取特 征碼, 而是計算病毒的散列值。 利用這個散列值, 就可以在查殺的過程中計算每個文件的散 列,然后進行比較。這種方法簡單易于實現(xiàn),一般在病毒剛被發(fā)現(xiàn)時,在逆向分析前使用。 常見的計算散列的算法有 MD5 、 Sha-1 以及 CRC32 等。 這里使用 CRC32 算法計算散列 值

6、,代碼如下:該函數(shù)的參數(shù)有兩個, 一個是指向緩沖區(qū)的指針, 第二個是緩沖區(qū)的長度。 它將文件全 部讀入緩沖區(qū)中, 然后用 CRC32 函數(shù)計算文件的 CRC32 散列值, 可以得到我所研究的 “熊 貓燒香 ”病毒的散列值為 0x89240FCD 。這里請大家注意,不同版本的病毒的散列值是不同 的,我所得出的這個值僅針對我所討論的這個版本的病毒。4、查找進程與提升權(quán)限我們需要在內(nèi)存中查找病毒是否存在,代碼如下:這里還需要提升系統(tǒng)的權(quán)限,提升成功后,當(dāng)前進程就可以訪問一些受限的系統(tǒng)資源。代碼如下:5、查找并刪除 Desktop_.ini 文件病毒會在所有盤符下面的非系統(tǒng)目錄中創(chuàng)建名為 Deskto

7、p_.ini 的文件,雖說這個文件 看似并不會對系統(tǒng)產(chǎn)生什么危害, 但是為了實現(xiàn)對“熊貓燒香”的徹底查殺, 還是應(yīng)當(dāng)將其 刪除的。這里主要涉及兩方面的知識,一個是遍歷整個磁盤的文件,這需要使用FindFirstFile()與 FindNextFile() 這兩個 API 函數(shù),并采用遞歸調(diào)用的方法 ; 另一個是修改文件屬性, 因為病毒創(chuàng)建出來的文件會帶有系統(tǒng)、 只讀和隱藏這三個屬性, 若不對其進行 更改,是無法刪除病毒文件的。依照這個思想,編寫代碼如下:www. ichu nqiu .comDWORD WINAPI FindFiles(LPVOID IpszPath)WIN32 FIND DA

8、TA stFindFile;HANDLE hFindFile;/掃描路徑char szPathMAX_PATH;char szFindFileMAX_PATH;char szSearchhVkX_PATH;char #szFilter;int len;int 廠et = 0;szFilter =lstrcpy(szPathJ (char *)IpszPath);len = lstrlen(szPath);if(szPathlen-l != 99)szPathlen *'; szPathlen+l = '0B;lstrcpy(szSearchJ szPath); lstrcat(

9、szSearchJszFilter);hFindFile = FindFirstFile(szSearchJ &stFindFile;); if(hFindFile = INVALID_HANDLE_VALUE)do需要說明的是, 這里需要在本程序前定義一個 CString 類型的 csTxt 全局變量, 用于將 查殺的結(jié)果信息輸出到程序界面,之后的程序中也會用到這個變量。6、主程序的編寫主程序也就是“一鍵查殺”按鈕的響應(yīng),我在代碼中已添加相應(yīng)的注釋:www. ichu nqiu .coniSetDlgltemText(IDCLISTcsTxt);/打開并去試結(jié)束病番進帝HANDLE

10、hProcess = OpenProcess(PROCESSALACCESSALSEdwPid); if (hProcess = INVALID_HANDLE_VALUE)csTxt += _T("無法結(jié)束病壽進程return ;bet = TerminateP廠ocess(hP廠ocess,0);if (bRet = FALSE)csTxt += _T(*無法結(jié)束病毒進程return ;csTxt += _TC病毒進程已經(jīng)結(jié)束SetDlgltemText(IDCLIST,csTxt); CloseHandle(hProcess);elsecsTxt +=系統(tǒng)中不存在spoclsv.

11、exe病毒進程Sleep(10);/查殺磁盤中是否存在名為spoclsv.exe的病壽文件 char szSysPathMAX_PATH = 0 ; GetSystemDirectory(szSysPathJMAXPATH);lstrcatCszSysPath/AdriversXspoclsv.exe");csTxt + _T(-檢查碩盤中是否存Sspoclsv.exe文件if (6etFlleAttributes(szSysPath) = OxFFFFFFFF)csTxt += _T (- spoclsv.文件不存在elsecsTxt += _T("spoclsv.exe

12、病焉文件存在,正在計茸鍛列值HANDLE hFile = CreateFileCszSysPathGENERICREADFILESHAREREADNULLOPENEXISTINGFILEATTRIBUTE _NORMAL, NULL);if (hFile = INVALID_HANDLE_VALUE) -Afx>tessageBox("Create Error");return ;DWORD dwSize = GetFileSizeChFileNULL);if (dwSize “ OxFFFFFFFF)AfxMessageBox("GetFileSize E

13、rror");return ;www. ichu nqiu .comDWORD dwSize = GetFileSize(hFile,NULL);if (dwSize = OxFFFFFFFF)AftessageBox("GetFileSize Errorw); return ;BYTE #pFile = (BYTE#)malloc(dwSize);if (pFile = NULL)AfssageBox(wma 1 loc Error*); return ;DWORD dwNum = 0;ReadFile(hFileJpFile>dwSize,&dwNum;N

14、ULL); /計算spoclsv.exe的散列值DWORD dwCrc32 = CRC32(pFileJdwSize);if (pFile != NULL) free(pFile); pFile = NULL;CloseHandle(hFile);/ 0X89240FCD是"館貓燒香"病毒的散列值if (dwCrc32 != 0X89240FCD)cbTxt += _T ("SpoGlbv.exetx:驗和驗證失敗W); elsecsTxt += _T("spoclsv.exe校驗和驗證成功,正在刪除/去除文件的隱藏、系統(tǒng)以及只讀屬性FILE ATTRI

15、BUTE HIDDEN; FILE ATTRIBUTE SYSTEM; -FILE ATTRIBUTE READONLY; dwFileAttributes);DWORD dwFileAttributes = GetFileAttributes(szSysPath); dwFileAttributes &= dwFileAttributes &= dwFileAttributes &=SetFileAttributes(szSysPathJ/ 刪除spoclsv.exebRet=DeleteFile(szSysPath);if (bRet)csTxt += _T ( &

16、quot; s poc 1 s v. exe 病毒被刪除!elsecsTxt += _T(Mspoclsv.exe 病毒無法刪除SetDlgltemTextClDCLIST,csTxt); Sleep(10);/ / 刪除每個盤符下的setup.exeautorun. inf,以及Desktop, ini / char szDriverStringMAXBYTE = 0 ;char *pTmp = NULL;獲取字符串類型的驅(qū)動器列表GetLogicalDriveStrings(MAXBYTE, szDriverString);prnp = szDriverString;while( spTm

17、p )char szAutorunPathMAX_PATH = 0 ;char szSetupPathMAX_PATH 0 ; lstrcat(szAutorunPath,pTmp);lstrcat(szAutorunPathJ"autorun.in廠);lstrcat(szSetupPath,pTmp);1strcat(szSetupPath,"setup.exe");if (GetFileAttributes(szSetupPath) = OxFFFFFFFF)csTxt pTmp;csTxt ” T("setup.exe病毒文件不存左elsecsT

18、xt += pTmp;csTxt += _T("setup.exe病焉文件存在,正在進行計算校驗和");HANDLE hFile CreateFile(szSetupPath,GENERIC_READ,FILE_SHARE_READJNULLJOPEN_EXISTINGJFILE_ATT RIBUTE_NORMAL » NULL );if (hFile = INVALID_HANDLE_VALUE)AfxMessageBox("Create Error*);return ;DWORD dwSize = GetFileSizeChFileNULL); if

19、 (dwSize = OxFFFFFFFF)AfxMessageBoxCetFileSize Error"); return ;BYTE *pFile = (BYTE*)malloc(dwSize); if (pFile = NULL)AfxMessageBox( ,fmalloc Error1'); return ;DWORD dwNum = 0;ReadFile(hFilepFileJdwSizeJ&dwNum;NULL);DWORD dwCrc32 = CRC32(pFileJdwSize); if (pFile != NULL) free(pFile); pF

20、ile = NULL;CloseHandle(hFile);if (dwCrc32 != 0X89240FCD)csTxt +=(校驗和驗證失敗);else csTxt += _T(校驗和驗證成功,正在刪除 );/去除文件的隱藏系統(tǒng)以及只讀屬性DWORD dwFileAttributes = GetFileAttributes(szSetupPath); dwFileAttributes &二 FILE_ATTRIBUTE_HIDDEN; dwFileAttributes &二 FILE_ATTRIBUTE_SYSTEM; dwFileAttributes &= -FI

21、LE ATTRIBUTE READONLY;SetFileAtt廠ibutes(szS皂tupPath, dwFileAttributes);/ 刪除setup.exebRet = DeleteFile(szSetupPath);if (bRet)csTxt += pTmp;csTxt += _1('* setup.exe 病毒被刪除!elsecsTxt += pTmp;csTxt += _T(M setup.exe 病毒無法刪除/去除文件的隱藏、系統(tǒng)以及只讀屬性DWORD dwFileAttributes = GetFileAttributes(szAutorunPath); dwF

22、ileAttributes -FILE ATTRIBUTE HIDDEN; dwFileAttributes &= -FILE ATTRIBUTE SYSTEM; dwFileAttributes &二-FILE ATTRIBUTE READONLY;SetFileAttributes(szAutorunPathJ dwFileAttributes); / 刪除autorun.infbRet = DeleteFile(szAutorunPath); csTxt += pTmp;if (bRet)csTxt += _T ( Mautorun. inf 刪除!www. ichu n

23、qiu .comelsecsTxt += _T(wautorun.inf不存在或無法刪除J/ 刪除Desktop_.iniFindFiles(pTmp);/檢宜T一個盤符pTmp += 4;Sleep(10);/修復(fù)注冊表內(nèi)容,刪除病蒔啟動項并修復(fù)文件的隱藏顯示/ csTxt +=(“正在檢萱注冊表");SetDlgltemText(IDC LIST,csTxt);/曽先檢萱啟動項char RegRunf = "SoftwareMicrosoftWindowsCurrentVersionRun"HKEY hKeyHKCU NULL;LONG lSize = MAX

24、BYTE;char cDataMAXBYTE = 0 ;long lRet = RegOpenKey(HKEY_CURRENT_USER, RegRun, AhKeyHKCU;);if(lRet = ERROR-SUCCESS)lRet = RegQueryValueEx(hKeyHKCUJ"svcshare"NULLNULL,(unsigned char *)cData,(unsigned long e)&lSiz e;);if ( lRet ERROR_SUCCESS)if (lstrcmp(eData,"C:WIND0WSsystem32driversspo:lsv.exe") = 0)csTxt += _T(”注冊表啟動項

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論