修改TimeDateStamp值,造不同的文件.

来源:互联网 发布:互联网产品设计软件 编辑:程序博客网 时间:2024/06/10 09:22
HANDLE hFile = CreateFileA(externName.c_str(), GENERIC_READ, 0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);if (INVALID_HANDLE_VALUE != hFile){dwFileSize = GetFileSize(hFile, NULL);lpBuffer = new(std::nothrow) BYTE[dwFileSize];if (lpBuffer){if (ReadFile(hFile, lpBuffer, dwFileSize, &dwBytesRead, NULL) != FALSE){srand(GetCurrentTime());BOOL ret = TRUE;BYTE key = rand();ret = randomChangeTimeStamp(lpBuffer, dwFileSize, key);if (ret){std::string subFileName = “newfile”;ret = writeFileContent(subFileName, lpBuffer, dwFileSize);// 将数据还原randomChangeTimeStamp(lpBuffer, dwFileSize, key);}delete [] lpBuffer;}CloseHandle(hFile);}else{printf("打开文件失败,请查看[%s]是否被占用", externName.c_str());}
BOOL randomChangeTimeStamp(LPBYTE pData, DWORD size, BYTE key){<span style="white-space:pre"></span>if (PeTypeUnknown != getPeType((LPBYTE)pData, size))<span style="white-space:pre"></span>{<span style="white-space:pre"></span>PIMAGE_DOS_HEADER pImageDosHeader = (PIMAGE_DOS_HEADER)pData;<span style="white-space:pre"></span>PIMAGE_NT_HEADERS32 pImageNtHeadr32 = (PIMAGE_NT_HEADERS32)(pData + pImageDosHeader->e_lfanew);<span style="white-space:pre"></span>/*time_t nowTime;<span style="white-space:pre"></span>time(&nowTime);<span style="white-space:pre"></span>pImageNtHeadr32->FileHeader.TimeDateStamp = nowTime;*/<span style="white-space:pre"></span>PBYTE pTimeStamp = (PBYTE)&pImageNtHeadr32->FileHeader.TimeDateStamp;<span style="white-space:pre"></span>int size = sizeof(pImageNtHeadr32->FileHeader.TimeDateStamp);<span style="white-space:pre"></span><span style="white-space:pre"></span>for (int i = 0; i < size; ++i)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>pTimeStamp[i] ^= key;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>return TRUE;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>return FALSE;}BOOL writeFileContent(std::string subFileName, LPBYTE pData, DWORD size){<span style="white-space:pre"></span>BOOL ret = FALSE;<span style="white-space:pre"></span>HANDLE hFile = CreateFileA(subFileName.c_str(), GENERIC_READ | GENERIC_WRITE, <span style="white-space:pre"></span>0,<span style="white-space:pre"></span>NULL,<span style="white-space:pre"></span>CREATE_ALWAYS,<span style="white-space:pre"></span>FILE_ATTRIBUTE_NORMAL,<span style="white-space:pre"></span>NULL);<span style="white-space:pre"></span>if (INVALID_HANDLE_VALUE != hFile)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>DWORD dwWrite = 0;<span style="white-space:pre"></span>ret = WriteFile(hFile, pData, size, &dwWrite, NULL);<span style="white-space:pre"></span><span style="white-space:pre"></span>CloseHandle(hFile);<span style="white-space:pre"></span>}<span style="white-space:pre"></span>return ret;}
0 0
原创粉丝点击