大家好,由于上一篇的起因,所以现在有了这一篇的文章,虽然上一篇文章说了一学C的方法,但我在此强调一下,一定要记住,学习C主要是学习基础的语法和编程的思想,不要把自己的思维固定死,要学会用发散的思维模式去做程序的开发,如果你只想用它来开发一般的应用程序的话,那就真的换一种编程语言吧,一般来说,C语言开发的应用程序虽然很高效,但是非常的复杂。但用其它的语言会很简单,开发周期非常快,所以学习之前,一定要给自己做好定位。C一般用于开发底层、高效的程序、内核驱动开发以及设备驱动开发。

    曾经在某大学问过同学,学了一学期的C,现在会什么,“我们只会做习题”,回答令我感觉无力,这也就是为什么现在学计算机的大学生很难从事计算机这一个行业,毕竟企业不会要一个只会做习题的大学生。好了,不废话了,那我们开始进入实战吧!!

    第一步:   修改游戏首先要拿到进程,再打开它吧
            

HWND hwnd = FindWindow(NULL,"WindowSword");    //获取到游戏窗口
               if (hwnd==NULL)
              {
                           MessageBox(NULL,"游戏未开启","Error",MB_OK);
                  return false;
               }
               else 
                    MessageBox(NULL,"成功获取窗口句柄","SUCCESS",MB_OK);
    第二步: 打开进程以供读写
       DWORD pid;
      HANDLE m_hProcess=NULL;
             GetWindowThreadProcessId(hwnd,&pid);        //获取窗口的pid 值   
             m_hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);     //打开进程以供读写
             if (m_hProcess==NULL)
            {              MessageBox(NULL,"打开进程失败","失败",MB_OK);
              return -1;
             }
      第三步:对内存进行读写操作(事先我已经查找到血值存放的地方0x004FE240)
        int blood =20000;
               ReadProcessMemory(m_hProcess,(LPVOID)0x004FE240,&blood,sizeof(blood),&nSize)   //此函数可以读取到游戏数据
               WriteProcessMemory(m_hProcess,(LPVOID)0x004FE240,&blood,sizeof(blood),&nSize)   //此函数可以改变游戏数据

     到此,整个修改的流程和思路都已经出来了,至于游戏数据我是怎样查询到的,兴趣的朋友可以去学一下ce工具的使用,这里我只给出了基本的思路,要怎样去做扩展,就得靠你自己了,比如像某些游戏辅助一样实现自动加血,加能量之类的。其实这篇文件的技术含量不高,重要的是掌握windows api 的使用,和编写程序的流程,希望大家能因此提高学习C的兴趣,我的目的也就达到了。感谢大家的支持!!!