190617游戏外挂入门(1)

两个任务

1、修改游戏中的相关参数的值

2、找到游戏的关键功能函数

下面是相关笔记(以植物大战僵尸为例)

工具:od、ec、汇编代码注入器

第一课

寻找阳光值的静态地址,用来永久的修改游戏的阳光值

第一步:找到阳光值的动态地址 19A37320
然后找出是谁调用了这个地址

EAX=00000064
EBX=00000004
ECX=00000000
EDX=0BE84080
ESI=19A31DC0
EDI=16B15870
EBP=0019FA98
ESP=00199790
EIP=0048982B

指针基址可能是 =19A31DC0

0048981D - test al,al
0048981F - jne 00489933
00489825 - mov eax,[esi+00005560]
0048982B - xor ecx,ecx
0048982D - test eax,eax

找到第一段偏移量是在寄存器esi的基础上偏移5560
第二步:找到谁调用了esi

EAX=00452650
EBX=0019FD00
ECX=0284A028
EDX=00667BA0
ESI=19A31DC0
EDI=0284A028
EBP=00000001
ESP=0019FC60
EIP=00452679

指针基址可能是 =0284A028

0045266A - cmp byte ptr [edi+000004CF],00
00452671 - je 0045269B
00452673 - mov esi,[edi+00000768]
00452679 - test esi,esi
0045267B - je 0045269B
第二段的偏移量是768
然后继续找下一段,看看是谁调用了edi
直到发现静态的地址

静态地址是6A9EC0
然后手动添加地址的偏移量,就可以修改阳光值

第二课

CALL 子程序 函数

关键CALL:
程序破解:关键判断CALL
游戏外挂:关键功能CALL

任务:
找阳光掉落的CALL

技巧:有静态看静态,无静态看动态
1、根据阳光掉落数量的变化来搜索相关函数的变化,知道最终范围变小,找到关键代码处地址。

EAX=006A7BE0
EBX=00000000
ECX=0000000C
EDX=00000006
ESI=006A7BE0
EDI=00000120
EBP=0BE546F0
ESP=0019F948
EIP=00471B5B

指针基址可能是 =006A7BE0

00471B50 - call 00513570
00471B55 - mov esi,eax
00471B57 - add dword ptr [esi+0C],01//关键代码处地址: 471B57
00471B5B - cmp dword ptr [esi],00
00471B5E - jne 00471B65

2、然后打开od跟踪这个地址
下断点,寻找关键
关键点的特征:
①、有判断语句
②、有大量的push

汇编代码注入测试:
push 0

push 4

push 3
c
push 000000C0

mov ecx,19B623A8

call 40CB10

你可能感兴趣的:(游戏安全以及反外挂)