VC往PE文件末尾读写数据
来源:互联网 发布:编程思路怎么写 编辑:程序博客网 时间:2024/05/20 16:10
//往文件末尾写数据
void CwritePEFileDlg::OnBnClickedButton2()
{
TCHAR strPath[MAX_PATH];
wcscpy(strPath, L"d:\\1.exe");
HANDLE handle = CreateFile(strPath, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);
if(handle == INVALID_HANDLE_VALUE)
{
MessageBox(L"打开exe资源文件出错");
return;
}
LARGE_INTEGER li;
li.QuadPart = 0;
SetFilePointerEx(handle, li,NULL, FILE_END);
TCHAR string[8];
wcscpy(string, L"TTTTTTT");
DWORD dwnumToWrite = 0;
WriteFile(handle, string, 16, &dwnumToWrite, NULL);
CloseHandle(handle);
}
//找到PE文件末尾
UINT CwritePEFileDlg::FindEndOfPE()
{
IMAGE_DOS_HEADER st_dos_header;
memset(&st_dos_header,0,sizeof(IMAGE_DOS_HEADER));
int i_count = sizeof(IMAGE_DOS_HEADER);
//返回的是相应可执行文件或dll文件加载到进程地址空间的句柄(基地址);
//传入NULL返回进程地址空间中可执行文件的基地址。
HMODULE hMod = GetModuleHandle(NULL);
PIMAGE_DOS_HEADER lpImageDosHeader = NULL;
//SECTION TABLE
PIMAGE_SECTION_HEADER lpImageSectionHeader = NULL;
PIMAGE_FILE_HEADER lpImageFileHeader = NULL;
//==Dos header 文件指针
lpImageDosHeader = (PIMAGE_DOS_HEADER)hMod;
//==新exe头部的文件地址,一个4字节的文件偏移量;==
lpImageFileHeader = (PIMAGE_FILE_HEADER)((BYTE *)hMod + lpImageDosHeader->e_lfanew + 4);
int SectionNums = lpImageFileHeader->NumberOfSections;
lpImageSectionHeader = (PIMAGE_SECTION_HEADER)((BYTE *)hMod + lpImageDosHeader->e_lfanew + sizeof(IMAGE_NT_HEADERS) + sizeof(IMAGE_SECTION_HEADER)* (SectionNums-1));
DWORD rawData = lpImageSectionHeader->PointerToRawData;
DWORD sizeifrawdata = lpImageSectionHeader->SizeOfRawData;
//PE文件结尾
return rawData + sizeifrawdata;
}
//从PE文件末尾读取数据
void CwritePEFileDlg::OnBnClickedButton1()
{
TCHAR strPath[MAX_PATH];
wcscpy(strPath, L"d:\\1.exe");
HANDLE handle = CreateFile(strPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
if (handle == INVALID_HANDLE_VALUE)
{
MessageBox(L"资源文件不存在,打开错误");
return ;
}
LARGE_INTEGER li;
li.QuadPart = FindEndOfPE();
SetFilePointerEx(handle, li, NULL, FILE_BEGIN);
TCHAR string[8];
DWORD m_dwNumToRead = 0;
ReadFile(handle, string, 16, &m_dwNumToRead, NULL) ;
MessageBox(string);
CloseHandle(handle);
}
- VC往PE文件末尾读写数据
- PE文件操作-末尾添加节
- 判断文件读写是否到达末尾
- python 读写PE文件模块pefile
- 记PE文件中读写资源
- VC读写XML文件
- VC读写INI文件
- VC读写INI文件
- VC读写XML文件
- VC读写ini文件
- VC读写INI文件
- VC读写INI文件
- VC读写INI文件
- VC读写XML文件
- VC读写XML文件
- vc 读写xml文件
- VC读写ini文件
- VC读写INI文件
- windows下apache tomcat整合
- memccpy() -- 拷贝内存内容
- Android学习--动态向SPinner控件中添加数据
- 源代码制作成RPM包
- 双向链表的相关操作C++实现
- VC往PE文件末尾读写数据
- 潮人必备:极简风格的iPhone外设Spike
- 为鼠标点击事件添加全局效果处理
- NLS_LANG与NLS_LANGUAGE的区别
- C#在默认浏览器中打开网页
- Strtus2 session 监听器 监听用户在线状态
- DevExpress GridColumn 显示图片
- Unity摄像机
- 初来公司,公司不用插件开发JAVAWEB,郁闷了半天,看来有必要学习tomcat配置