制作内存补丁有很多现成的工具,通过编程也可以自己实现打内存补丁。
源代码:
#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。