时间:2018-11-3来源:本站原创作者:佚名

声明:本系列文章由网络转载,

转载来源未知,

版权属于原作者,特此声明。

注:由于代码手机端看有错位,推荐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
------分隔线----------------------------