声明:本系列文章由网络转载, 转载来源未知, 版权属于原作者,特此声明。 注:由于代码手机端看有错位,推荐PC端浏览器查看。C语言游戏外挂(一):一个简单的内存外挂通过C语言编写一个简单的外挂,通过API函数修改游戏数据,从而实现作弊功能 对象分析 要用的API函数简单介绍 编写测试效果 总体评价 对象分析本次游戏对象为SuprMarioXP 没有更新所以可用任意版本试玩发现人物血量最大为0,心最大为99,命最大为99 要用的API函数简单介绍HWNDFindWindow(LPCTSTRIpClassNam,LPCTSTRIpWindowNam);通过类名或窗口名查找,返回窗口句柄 DWORDGtWindowThradProcssId(HWNDhWnd,LPDWORDlpdwProcssId);得到窗口句柄后通过GtWindowThradProcssId这个函数来获得窗口所属进程ID和线程ID HANDLEOpnProcss(DWORDdwDsirdAccss,BOOLbInhritHandl,DWORDdwProcssId)打开一个已存在的进程对象,并返回进程的句柄 boolWritProcssMmory(HANDLEhProcss,LPVOIDlpBasAddrss,LPVOIDlpBuffr,DWORDnSiz,LPDWORDlpNumbrOfBytsWrittn);能写入某一进程的内存区域。入口区必须可以访问,否则操作将失败 编写测试效果打开游戏 运行外挂 成功执行 // //0一个简单的内存外挂.cpp //C/C++ // #includwindows.h #includstdio.h intmain(){ HWNDh=::FindWindow(NULL,"SuprMarioXP");//寻找并打开进程 DWORDprocssid; GtWindowThradProcssId(h,procssid); HANDLEhprocss=0; hprocss=OpnProcss(PROCESS_ALL_ACCESS,FALSE,procssid); if(hprocss==0){//对应处理 printf("打开进程失败!\n"); rturn; }ls{ printf("打开进程成功!\n"); DWORDhp=0;//要修改的游戏数据最大值 DWORDhart=99; DWORDlif=99; DWORDaddr=0x;//通过CE找到的游戏数据地址 DWORDaddr2=0x; DWORDaddr3=0xa2; DWORDrs=WritProcssMmory(hprocss,(LPVOID)addr,hp,4,0);//写入内存修改游戏数据 DWORDrs2=WritProcssMmory(hprocss,(LPVOID)addr2,hart,4,0); DWORDrs3=WritProcssMmory(hprocss,(LPVOID)addr3,lif,4,0); rturn0; } } 总体评价 由于是简单外挂,没有GDI界面和失败对应处理,仅供入门学习交流 inn0tam是一个正在成长的安全团队长按可北京白癜风断根治疗的医院天津市治疗白癜风医院转载请注明原文网址:http://www.gzdatangtv.com/bcyytx/11654.html |