手动编程写内存补丁实例

Eddy 发布于2009-11-11 12:34:6 分类: 程序设计 已浏览loading 网友评论0条 我要评论

制作内存补丁有很多现成的工具,通过编程也可以自己实现打内存补丁。

源代码:

#include "stdafx.h"
#include <windows.h>

int main(int argc, char* argv[])
{
 STARTUPINFO sInfo;
 PROCESS_INFORMATION pInfo;
 byte olddata[] = {0x0,0x0};
 byte newdata[] = {0x90,0x90};
 
 sInfo.cb=sizeof(sInfo);
 ZeroMemory(&sInfo,sizeof(sInfo));
 ZeroMemory(&pInfo,sizeof(pInfo));
 
 if (!CreateProcessA(NULL,"工程1.exe",NULL,NULL,FALSE,CREATE_SUSPENDED,NULL,NULL,&sInfo,&pInfo))
 {
  MessageBoxA(NULL,"本补丁必须与原文件放在同一目录下!","注意",MB_OK);
  return -1;
 }
 ReadProcessMemory(pInfo.hProcess,(void *)0x00401D3F,olddata,2,NULL);
 if (olddata[0] == 0x74 && olddata[1] == 0x43)
 {
  WriteProcessMemory(pInfo.hProcess,(void *)0x00401D3F,newdata,2,NULL);
  ResumeThread(pInfo.hThread);
  CloseHandle( pInfo.hProcess );
  CloseHandle( pInfo.hThread );
  MessageBoxA(NULL,"数据成功写入!","成功",MB_OK);
 }
 else
 {
  MessageBoxA(NULL,"无法补丁数据!","失败",MB_OK);
  TerminateProcess(pInfo.hProcess,0);
  CloseHandle( pInfo.hProcess );
  CloseHandle( pInfo.hThread );
  return -1;
 }
 
 return 0;
}

实例程序及源码下载

已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/88.html     欢迎订阅Eddy Blog

关于 编程  内存补丁  的相关文章

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言