修改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
- 修改TimeDateStamp值,造不同的文件.
- ubuntu下修改 vim 配置 将 .inc 后缀文件 动态当作不同文件对待的解决办法
- 修改frame 和修改bounds的不同
- Android 相对布局中的 代码中修改属性与布局文件的设置不同的解决方法
- Dos:修改IP地址的bat脚本文件,在不同局域网切换IP地址
- Dos下修改IP地址的bat脚本文件,在不同局域网切换IP地址
- VS2010调试时修改代码 调试时源文件与模块生成时的文件不同
- STM32F4的system_stm32f4xx.c文件需要根据不同板卡进行修改
- case-when 用法 根据不同的值修改同一字段为不同值
- Windows下通过Git管理创建于Linux的项目,提示文件已修改,Diff得知文件的mode不同
- 不同浏览器不同分辨率,调用不同的css文件
- 【DZX修改】根据性别不同显示不同的默认头像
- 不同的操作系统修改时区方法
- mybatis 修改不同内容的批量更新
- linux下,用c语言编程,实现从一个文件读取内容到另一个文件,可以在文件的不同位置修改文件内容,并保存。
- git - 查看已暂存和未暂存的更新以及文件修改之后暂存区、上次提交过的不同
- 查看文件的不同diff
- 不同的头文件注释
- 表单验证
- ROS学习之关于服务的一些命令_总结
- STL总结
- Android APK文件安装过程小结
- Git用户手册--起步
- 修改TimeDateStamp值,造不同的文件.
- HTTP 验证 Tomcat中进行基本验证 (Basic Authentication) 和摘要验证 (Digest Authentication)
- Eclipse 安装反编译插件jadclipse
- codeforces - 597A
- 2014十大的安全工具(ToolsWatch.org投票选出)
- JAVA字符串格式化-String.format()的使用
- SEO优化其实就是这么简单
- 用centOS 7安装cadence搭建适合IC Design的科研环境(一)——相关知识准备
- IDEA简单实用的快捷键