用writefile函数可以修改文件内容吗?解决方案
用writefile函数可以修改文件内容吗?
#include <windows.h>
#include <stdio.h>
int main()
{
char buffer[]="hello!";
DWORD dwWriteSize;
HANDLE hFile = CreateFile("c:\\1.exe", //创建文件的名称。
GENERIC_WRITE, // 写文件。
0, // 不共享读写。
NULL, // 缺省安全属性。
OPEN_EXISTING, // 如果文件存在,则打开。
FILE_ATTRIBUTE_NORMAL, // 一般的文件。
NULL); // 模板文件为空。
SetFilePointer(hFile,0,NULL,FILE_END);
WriteFile(hFile,buffer,sizeof(buffer),&dwWriteSize,NULL);
CloseHandle(hFile);
return 0;
}
我目前水平菜的不得了只能写出以上代码
我的要求是修改 已经存在的 1.exe
偏移地址:4B383 把4465736372697074696F6E 替换 6F686D79676F6421212121
用writefile能实现吗? 不可以的话 用哪些函数实现最简单(代码比较少的)
------解决思路----------------------
关掉杀毒软件。
------解决思路----------------------
窝哈哈哈,赵老湿,我闻到你学术上的腐朽味道罗……
既然 dwWriteSize没有什么用处,为什么不这样写:
WriteFile (hFile, buffer, sizeof (buffer),& (DWORD) {11}, NULL);
关掉杀毒软件……赵老湿原来不是裸奔……
#include <windows.h>
#include <stdio.h>
int main()
{
char buffer[]="hello!";
DWORD dwWriteSize;
HANDLE hFile = CreateFile("c:\\1.exe", //创建文件的名称。
GENERIC_WRITE, // 写文件。
0, // 不共享读写。
NULL, // 缺省安全属性。
OPEN_EXISTING, // 如果文件存在,则打开。
FILE_ATTRIBUTE_NORMAL, // 一般的文件。
NULL); // 模板文件为空。
SetFilePointer(hFile,0,NULL,FILE_END);
WriteFile(hFile,buffer,sizeof(buffer),&dwWriteSize,NULL);
CloseHandle(hFile);
return 0;
}
我目前水平菜的不得了只能写出以上代码
我的要求是修改 已经存在的 1.exe
偏移地址:4B383 把4465736372697074696F6E 替换 6F686D79676F6421212121
用writefile能实现吗? 不可以的话 用哪些函数实现最简单(代码比较少的)
------解决思路----------------------
关掉杀毒软件。
#include <windows.h>
#include <stdio.h>
int main()
{
char buffer[11]={0x6F,0x68,0x6D,0x79,0x67,0x6F,0x64,0x21,0x21,0x21,0x21};
DWORD dwWriteSize=11;
HANDLE hFile = CreateFile("c:\\1.exe", //创建文件的名称。
GENERIC_WRITE, // 写文件。
0, // 不共享读写。
NULL, // 缺省安全属性。
OPEN_EXISTING, // 如果文件存在,则打开。
FILE_ATTRIBUTE_NORMAL, // 一般的文件。
NULL); // 模板文件为空。
SetFilePointer(hFile,0x4B383,0,FILE_BEGIN);
WriteFile(hFile,buffer,sizeof(buffer),&dwWriteSize,NULL);
CloseHandle(hFile);
return 0;
}
------解决思路----------------------
窝哈哈哈,赵老湿,我闻到你学术上的腐朽味道罗……
既然 dwWriteSize没有什么用处,为什么不这样写:
WriteFile (hFile, buffer, sizeof (buffer),& (DWORD) {11}, NULL);
关掉杀毒软件……赵老湿原来不是裸奔……