某dll程序被删自动还原代码

来源:互联网 发布:外交豁免权知乎 编辑:程序博客网 时间:2024/06/06 00:43
DWORD _stdcall ShieldThread(LPVOID lParam)    {     char   DllFilePath[MAX_PATH];        HANDLE hDllFile;     HANDLE hSearch;      void*  MemDll;      int    SizeDll;       DWORD  BytesRead;     WIN32_FIND_DATA  FileData;             __try       {              GetModuleFileName(HMODULE(g_hDllModule), DllFilePath,MAX_PATH);            hDllFile =CreateFile(DllFilePath,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);            SizeDll  =GetFileSize(hDllFile,0);            MemDll   =VirtualAlloc(0,SizeDll,MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE);            ReadFile(hDllFile,MemDll,SizeDll,&BytesRead,0);            CloseHandle(hDllFile);                       while(1)            {                hSearch =FindFirstFile(DllFilePath,&FileData);                if(hSearch==INVALID_HANDLE_VALUE)                {                              hDllFile=CreateFile(DllFilePath,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);                    WriteFile(hDllFile,MemDll,SizeDll,&BytesRead,0);                    CloseHandle(hDllFile);                }                 FindClose(hSearch);             Sleep(500);         }        }        __finally       {            CloseHandle(hDllFile);            FindClose(hSearch);        }            return 0; }