大家好,由于上一篇的起因,所以现在有了这一篇的文章,虽然上一篇文章说了一学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的兴趣,我的目的也就达到了。感谢大家的支持!!!
PS : 下一篇文件,一部电影启迪的密码破解之旅--真实的故事 (在这里只为让大家知道,想像力比什么都重要,编程最重要的一点,就是要敢想)