c语言修改文件内容函数,用writefile函数可以修改文件内容吗?解决方案

用writefile函数可以修改文件内容吗?

#include 

#include 

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 

#include 

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;

}

------解决思路----------------------

引用:关掉杀毒软件。

#include 

#include 

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);

关掉杀毒软件……赵老湿原来不是裸奔……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值