怎么做游戏外挂:做游戏外挂基础入门



外挂分为2种种是脱机也就是模拟客户端称为外挂.另种是利用游戏本身对游戏进行些相关动作称的为内挂是在游戏进程内部完成任务今天要说是传奇2(虽然这游戏过时了但作为研究来说还是值得:)内挂点点知识其实我也不太懂复杂东西也弄不出来,所以我就把我所学到点点知识写了出来希望更多人能够了解这方面知识

本文没有什么技术可言,但相信对些未入门人很有用.

步:首先我们得将传奇mir.dat脱壳有些私服没有mir.dat那就看看mir.exe,我们查得他是用aspack加壳,你可以去网上下载相关工具也可以手动脱掉.这样传奇2现在就是赤裸裸站在我们面前了:)现在要做就是给他开开刀看他心肝肠肺都在做些什么在哪里长着.....

第 2步:我们用OLLYDBG加载刚才已经脱壳mir.dat,然后我们利用插件菜单里中文插件来获得相关信息,如果你没有此插件可以去www.pediy.com找找.不会儿od给我们呈现出了很多串信息我们现在就搜索他“肺”-(\"攻城区域\")





经过调试确定这里就是个屏幕输出就是在我们攻城时候屏幕左上角显示那几个字.

0047A4B3.68FFFFFF00push0FFFFFF//字体颜色
0047A4B8.6A00push0//背景色
0047A4BA.6894A54700pushunpacked.0047A594
0047A4BF.33C9xorecx,ecx//x坐标
0047A4C1.33D2xoredx,edx//y坐标
0047A4C3.8B45F8moveax,dwordptrss:[ebp-8]//设备场景句柄
0047A4C6.E8D5640200callunpacked.004A09A0//内部屏幕输出

那么我们就写出这个

typedefstruct
{
len;
chartext[100];
}DT;

voidSText(DWORDeax1)
{

DTd;
strcpy(d.text,(char*));
d.len=strlen();
txtaddress=(DWORD)&d.text[0];
_asm
{
moveax,eax1
callshowmode1
callshowmode2 [Page]
pushTRANSPARENT
pusheax
callshowmode3
pushtxtcolor
pushbkcol
pushtxtaddress
movecx,y
movedx,x
moveax,eax1
callShowTxtcall
}
}

然后定义些全局变量和个可以动态修改输出串和颜色和位置:

constDWORDconaddress=0x47A6CC;
constDWORDShowTxtcall=0x4a09a0;
constDWORDshowmode1=0x44D8B4,showmode2=0x41834C,showmode3=0x406434;
DWORDx=0x0,y=0x0,txtcolor=0x0,bkcol=0x1e00ff;
DWORDtxtaddress=0x0;

char*=\"传奇小外挂--ByLiquidXDiy2005.6.15\";

voidtxt(char*s,

DWORDX,DWORDY,

DWORDTXTCOLOR,DWORDBKCOL)
{
=s;
x=X;

y=Y;

txtcolor=TXTCOLOR;

bkcol=BKCOL;
}

现在我们屏幕输出已经模拟出来了,下面要做就是改掉游戏显示屏幕坐标(有关这个地址你可以用金山游侠等工具查找很方便)内部执行流程使这个跳转到我们中来这样就可以在屏幕上无闪动输出想输出串了..



定义个naked有关naked可以去网上查查..

__declspec(naked)initST
{

_asm
{
pusheax
pushedx
pushecx
pushebp//保存参数
moveax,dwordptr[ebp-0x8]//获得我们当时eax中
pusheax//传入eax参数 [Page]
calldisfunc//我们
popebp//恢复堆栈
popecx
popedx
popeax
movecx,9
jmpconaddress//返回游戏继续执行
}

}

void__stdcalldisfunc(DWORDeax1)
{
SText(eax1);//我们
}

好了现在基本上都完成得差不多了现在只需要修改机器码了

上面代码中我们看到直都需要获得当时eax中经过跟踪分析我选择0x47a6cc(返回)(显示地图坐标入口偏移几个字节在这里可以在本时间内拿到eax而处理机器码量较少)处地址...



代码如下:

LRESULTCALLBACKhookproc(ncode,WPARAMwparam,LPARAMlparam)
{
(KEYUP(lparam)&&ncodeHC_ACTION&&wparamVK_HOME)
{
txt(\"ShowTextTesting....终于成功啦!!!\",0x120,0x80,0x0,0x00ffff);
}
(KEYUP(lparam)&&ncodeHC_ACTION&&wparamVK_F12)
{

charbuf[MAX_PATH];
::GetClassName(GetActiveWindow,buf,MAX_PATH);
(lstrcmpi(buf,\"TFrmMain\")0)
{

_asm//改写地址跳转到我们
{
leaeax,initST
movebx,0x47a6cc//写入这个地址
subeax,ebx
movesi,0x47a6c7
movdwordptr[esi],0xe9//JMP
movdwordptr[esi+0x1],eax//合成跳转指令
}
}
}
::CallNextHookEx(hook,ncode,wparam,lparam);
}

现在我们个屏幕输出简单内挂就完成了,根据网上提供些内存地址你可以给它加上更多功能 [Page]

最后件事情就是外挂退出时恢复机器码,以免游戏跳转到个不可用地址造成崩溃..

代码如下:

voidrevert
{

_asm
{
movesi,0x47A6C7
moveax,0xb9
movdwordptr[esi],eax
moveax,0x09
movdwordptr[esi+0x1],eax
}
}

全文完!本人能力有限,有任何的处希望告的.以免造成误导...

本文配套代码下载:

mir20057122103.rar

作者QQ:156789519mailto:[email protected]

等过些天把我收集些外挂源码整理下提供给大家下载研究:)

相关交流论坛:www.gameres.com,www.cnesoft.com

相关资料

全屏看血
内存地址:47A0D3
75EB
原版:00000075108B45EC
新版:000000EB108B45EC
}



{强行退出
内存地址:004620E6(7)
7490
0D90
原版:2000740D8B45
新版:200090908B45
内存地址:00462162(3)
7490
0A90
原版:2000740A8B45
新版:200090908B45
内存地址:4914CA(B)
内存地址:491576(7)
7490
0E90
原版:0080782000740EA1
新版:00807820009090A1
}
{免助跑
内存地址:00461BEB(C-F0)
0F90
8E90
7990
FD90
FF90
FF90
原版:E8000F8E79FDFFFF
新版:E800909090909090
内存地址:461BB9(A-E)
0F90
8C90
DA90
0090
0090
0090
原版:00010F8CDA000000A1
新版:0001909090909090A1
}
{跑步砍
内存地址:004634E2
0001
原版:4F00008D45F0
新版:4F00018D45F0


}
{攻击速度
内存地址:467016(7)
78E2
0504
原版:EB0BB87805
新版:EB0BB84805
介绍说明:速度由 2位数指定 2位数前后互换为真实数据数字大为慢小为快
}
{穿人
内存地址:472D17
340C
原版:00000034018845
新版:0000000C018845
}
{免蜡
内存地址:471BDE
74EB
原版:008038007454
新版:00803800EB54
}
{物品闪光
内存地址:471AA6
04
原版:1300007625
新版:0200007625
}
{自动放药
0048C21FF968FDFF
004623A276070000
0048C21FDD50B001
004623A27AEDB201
}
{超负重??
Poke00499A40EB
004975A8EB5C
00499A40EB93
{攻击思路方法修改
原版
00463425741C
0046344A7410
004634637415
半月
00463425741C
0046344A7410
004634639090
攻杀
00463425741C
0046344A9090
004634637415
烈火
004634259090
0046344A7410
004634637415
思路方法 2
半月
Poke00463363D0
烈火
Poke00463363D1
普通
Poke00463363C6

C745E8C60B单手砍
C745E8C70B双手砍 [Page]
C745E8C80B跳跃砍
C745E8CA0B攻杀
C745E8CB0B刺杀
C745E8D00B半月
C745E8D10B烈火
}


{无限刺杀
内存地址:463363
C6CB
原版:C745E8C60B
新版:C745E8CB0B
内存地址:463373
C7CB
原版:C745E8C70B
新版:C745E8CB0B
}
无限攻杀
内存地址:463363
C6CA
原版:C745E8C60B
新版:C745E8CA0B
内存地址:463373
C7CA
原版:C745E8C70B
新版:C745E8CA0B
Tags:  外挂入门 如何做游戏外挂 做游戏外挂 怎么做游戏外挂

延伸阅读

最新评论

  1. 对我来说还是天书
  2. 看的看不懂啊
  3. 5555555555   我太笨了  还是老实些吧 最基本都不会啊  我的眼镜啊  天书~~~~~~
  4. 5555555555   我太笨了  还是老实些吧 最基本都不会啊  我的眼镜啊  天书~~~~~~
  5. 555555555555555      还是看不懂

  6. 偶也看不懂

发表评论