其实生成服务端用到的函数也就几个:

FindResource:查找一个资源。

SizeofResource:获得资源的尺寸,装载资源时使用。

loadResource:装载资源,将资源的二进制数据装载到内存中。

LockResource:锁定资源,将内存中的资源数据锁定。

 

然后利用这几个函数来写出代码如下,因为是手敲,有可能会存在字符错误:

HRSRC hfinddata = FindResource(NULL,MAKEINTRESOURCE(IDR_SERVER1),"Server");

if(!hfinddata) return;

DOWRD dwSsize,dwWrite;

dwSsize = SizeofResource(NULL,hfinddata);

HGOLBAL hRscdata = LoadResource(NULL,hfinddata);

LPBYTE p = (LPBYTE)GlobalAlloc(GPTR,dwSszie);

if(!p) return;

CString str="xxx";

CopyMemory((LPVOID)p,(LPVOID)LockResource(hRscdata),dwSsize);

CopyMemory((LPVOID)(p+address),(LPVOID)"",str.length());

HANDLE hWfile;

hWfile = CreateFile(文件命,GENERIC_WRITE,0,NULL,OPEN_ALWAYS,NULL,NULL);

WriteFile(hWfile,p,dwSsize,&dwWrite,NULL);

CloseHandle(hWfile);

return 0;

大致就是这些东西了,没写什么说明,网上大多数也是这样的,下面复制份网上写的过来对比一下:

 

 


  
  1. DWORD dwSize,dwWritten; 
  2. HRSRC hr=FindResource(0,MAKEINTRESOURCE(IDR_SERVER),"SERVER");//查找资源 
  3. if(hr==NULL) MessageBox("hr error"); 
  4.  
  5. dwSize=SizeofResource(NULL,hr); 
  6.  
  7. HGLOBAL hg=LoadResource(NULL,hr);//加载资源 
  8.  
  9. if(hg==NULL) MessageBox("hg error"); 
  10.  
  11. LPSTR lp=(LPSTR)LockResource(hg);//锁定资源 
  12.  
  13. if(lp==NULL) MessageBox("lp error"); 
  14.  
  15.  
  16. LPBYTE p=(LPBYTE)GlobalAlloc(GPTR, dwSize);  
  17. if (p==NULL)  MessageBox("lp error"); 
  18.  
  19. CopyMemory((LPVOID)p, (LPCVOID)LockResource(hg), dwSize);                                    // 复制资源数据 
  20. CopyMemory((LPVOID)(p+0x5020), (LPCVOID)m_name.LockBuffer(),MAX_PATH);            //写入主机名称信息 
  21. CopyMemory((LPVOID)(p+0x5124), (LPCVOID)m_ip.LockBuffer(),15);    //写入主机名称信息 
  22.  
  23. /*本地文件路径*/ 
  24.  
  25. CString SaveFilePath; 
  26. BROWSEINFO bi; 
  27. ZeroMemory(&bi,sizeof(BROWSEINFO)); 
  28. bi.hwndOwner=GetSafeHwnd(); 
  29. bi.lpszTitle="将文件保存到"
  30. LPITEMIDLIST idl=SHBrowseForFolder(&bi); 
  31. if(idl==NULL) 
  32.     return
  33. SHGetPathFromIDList(idl,SaveFilePath.LockBuffer()); 
  34.  
  35. strcat(SaveFilePath.LockBuffer(),"/"); 
  36. strcat(SaveFilePath.LockBuffer(),"BabyServer.exe"); 
  37.  
  38.  
  39. HANDLE hFile; 
  40. hFile = CreateFile(SaveFilePath.LockBuffer(),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);//创建文件 
  41. if(hFile == NULL)    MessageBox("file error"); 
  42. else                MessageBox("OK!"); 
  43. WriteFile(hFile,(LPCVOID)p,dwSize,&dwWritten,NULL);//写入文件 
  44. CloseHandle(hFile);