很久的風行就是用的這種方法來防止使用者刪除它。
很久以前的一段時期也用次方法防隨身碟病毒
如下所示
:
防隨身碟病毒的原理就是在每個盤建立一個這樣的檔案
下面先接受幾個win API
DWORD WINAPI GetLogicalDriveStrings(<span style="white-space:pre"> </span>//擷取磁碟 _In_ DWORD nBufferLength, _Out_ LPTSTR lpBuffer );
<span style="color: rgb(69, 69, 69); font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 14px; line-height: 20.0060005187988px;">Fills a buffer with strings that specify valid drives in the system.</span>
第二個API
BOOL WINAPI CreateDirectory( _In_ LPCTSTR lpPathName, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes ); <span style="color: rgb(69, 69, 69); font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 14px; line-height: 20.0060005187988px;">Creates a new directory. </span>
下面是代碼
#include "stdafx.h" #include <windows.h> void ImmuntiyAutoRun() { //建立無法刪除的檔案夾 char szDriverStr[MAXBYTE] = { 0 }; DWORD dwLen = GetLogicalDriveStringsA(MAXBYTE, szDriverStr); for (int i = 0; i < dwLen; i+=4) { char szRoot[4] = {}, szPath[MAX_PATH] = { 0 }; strncpy_s(szRoot, &szDriverStr[i], 4); strcpy_s(szPath, szRoot); strcat_s(szPath, "autorun.inf"); if (!CreateDirectoryA(szPath, nullptr)) printf_s("Error:%d", GetLastError()); strcat_s(szPath, "\\anti......\\"); if (!CreateDirectoryA(szPath, nullptr)) printf_s("Error:%d", GetLastError()); } } int _tmain(int argc, _TCHAR* argv[]) { ImmuntiyAutoRun(); getchar(); return 0; }
這樣就會在每一個盤下面建立一個尾部帶"....."的畸形檔案夾。
但注意的是,用win API 可以把他刪除哦。
BOOL WINAPI RemoveDirectory( _In_ LPCTSTR lpPathName );
以上就是 簡單的反隨身碟病毒(刪除不了的畸形檔案夾)的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!