制作一个简单的游戏修改器_第2页

考试站(www.examzz.com)   【考试站:中国教育考试第一门户】   2013年8月14日

  char szTitle[]="坦克大战修改";
  DWORD  addr=0x004C9C84;   //存放炮弹数量的内存地址
  DWORD  pid;      //坦克大战的PID
  int  val=1000;    //炮弹要修改的数量
  //-------------------------------------------------------------------------------------------------
  // WndProc- 窗口函数
  //-------------------------------------------------------------------------------------------------
  LRESULT CALLBACK WndProc(HWND hWnd,UINT message, WPARAM wParam, LPARAM lParam)
  {
  // int wmId,wmEvent;
  switch (message)
  {
  case WM_DESTROY:
  PostQuitMessage(0);
  break;
  case WM_TIMER:
  {
  HWND  hw=FindWindow(NULL,"Normal-tanks");  //FindWindow()得到坦克大战程序的句柄
  HANDLE hProcess;    //定义坦克大战的进程句柄
  if (hw!=0)
  {
  SetForegroundWindow(hw);    //使我们的坦克大战设置为当前窗口
  GetWindowThreadProcessId(hw,&pid);    //得到游戏的PID号
  hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);    //打开进程PROCESS_ALL_ACCESS参数,制定进程可读可写
  WriteProcessMemory(hProcess,(LPVOID)addr,&val,4,0);    //向坦克大战进程内存中写入数据
  }
  else
  MessageBox(g_hWnd,"游戏还没有运行吧!","提示信息",MB_OK|MB_ICONINFORMATION);
  }
  default:
  return (DefWindowProc(hWnd,message,wParam,lParam));
  }
  return 0;
  }   //-------------------------------------------------------------------------------------------------
  // InitApplication-注册窗口类
  //-------------------------------------------------------------------------------------------------
  BOOL InitApplication(HINSTANCE hInstance)
  {
  WNDCLASSEX winclass;
  winclass.cbSize = sizeof(WNDCLASSEX);
  winclass.style  = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
  winclass.lpfnWndProc = WndProc;
  winclass.cbClsExtra = 0;
  winclass.cbWndExtra = 0;
  winclass.hInstance  = hInstance;
  winclass.hIcon  = LoadIcon(NULL, IDI_APPLICATION);
  winclass.hCursor  = LoadCursor(NULL, IDC_ARROW);

相关文章