F1快捷键CALL

/*
使用F1-F8 CALL
*/
 
MOV ECX,[924E0C]
MOV ECX,[ECX+1C]
MOV ECX,[ECX+20]
MOV ECX,[ECX+0BAC]
MOV ECX,[ECX+0C]
MOV ECX,[ECX+0] //使用F1快捷键CALL 使用Fn的快捷键CALL=(fn-1)*4
MOV EDX,[ECX]
CALL [EDX+8]
 
 
CE开始
094A6888
1253A0E0
1253A1B4
F1上面不放技能 搜索= 0
放个技能在F1键上 搜索 > 0
换个技能搜索 数值改变的
最后找到2个地址
把这个地址dd 这个地址看看结果 和快捷键上的比较
od 找F1的数组 注意不要求换技能 只用普通攻击切换
 
 
dd 154B88B0
硬件写入
选测试地址是否正确 看特征
下断后,回到游戏里 把普通攻击拖到第1格子上
按F9 删除硬件断点
回到游戏里拖动技能
OD断下来
 
ECX=[EAX+EDI*4]
EAX=[ESI+0C]
EDI=0 //F1=0 f2=1,...,
ESI=[[0A94464]+1c]+20
ECX=[EAX+EDI*4]
ECX=[[ESI+0C]+1*4]
ECX=[[[[0A94464]+1c]+20]+0C]+1*4
测试 F1的内存 154F8728
dd [[[[0A94464]+1C]+20]+0C]+0*4
测试结果不不指向任何地方
继续往下找
EAX=[ESI+EAX*4+C38]
EAX=[ESI+1*4+0C38]
4+0C38=C3C
EAX=[ESI+0C3C]
完整的代码
ECX=[[ESI+0C]+1*4]
ECX=[[[[[0A94464]+1C]+20]+0C3C]+0C]+0*4
测试
dd [[[[[0A94464]+1C]+20]+0C3C]+0C]+0*4 =154F8728
和CE的地址一样 结果正确
 
F1数组=[[[[[0A94464]+1C]+20]+0C3C]+0C]+0*4 //F1=0,F2=1,..,Fn=Fn-1
 技能放在F1上面
 
查找数据
按F1键 使用技能
00518673 - 8B 03  - mov eax,[ebx]
00518726 - 8B 13  - mov edx,[ebx]
005A8A81 - 8B 10  - mov edx,[eax]
004A5501 - 8B 07  - mov eax,[edi]
 
Ctrl+G 005A8A81
//EAX=10D8CDA8=dd [[[[[0A94464]+1C]+20]+0C3C]+0C]+0*4
MOV EDX,[EAX]
MOV ECX,EAX
CALL [EDX+8]
 
MOV EAX,[0A94464]
MOV EAX,[EAX+1C]
MOV EAX,[EAX+20]
MOV EAX,[EAX+0C3C]
MOV EAX,[EAX+0C]
MOV EAX,[EAX+0] // 0=F1, 4=F2 ,8=F3,12=F4,...,+4
MOV EDX,[EAX]
MOV ECX,EAX
CALL [EDX+8]
正确

OD Ctrl+S定位码

//上面的JMP

ADD EBX,-3D

PUSH 0

PUSH EBX

 
//////////////////////////////////////
 
用CE找到这个地址 094169A0
每次用其他技能往快捷键F1上拖
OD dd 094169A0
 
mov [eax+edi*4],ecx, edi=0
mov eax,[esi+0c]
mov ecx,[eax+ebx*4+0BA8],ebx=1
mov ecx,[ecx+20]
mov ecx,[eax+1c]
mov ecx,[0924e0c]
 
 

dd [[[[[924E0C]+1C]+20]+1*4+0BA8]+C]+0*4

1*4+0BA8=BAC

 

 

找F1的功能CALL

主要思路

F1~F8 1~6功能CALL

dd  [[[[[924E0C]+1C]+20]+1*4+0BA8]+C]+0*4

//1~6

dd  [[[[[924E0C]+1C]+20]+1*4+0B9C]+C]+0*4

 

F1 =[[[[[924E0C]+1C]+20]+1*4+0BA8]+C]+0*4

在CE中添加地址

16进制显示结果

 

把数值复制1个添加手动添加地址

 

004F514F - 8B 55 00  - mov edx,[ebp+00]
004F51FF - 8B 55 00  - mov edx,[ebp+00]
0054EB1B - 8B 10  - mov edx,[eax]
00492E21 - 8B 07  - mov eax,[edi]
 

 

按F1找到的 ,用CE查找到了一个数值

0054EB1B - 8B 07  - mov eax,[edi]

ctrl+g 004BDC21 

通过查询 F1 =[[[[[924E0C]+1C]+20]+1*4+0BA8]+C]+0*4 这个数值刚好等于 EAX的值

//获得EAX的值 给EDX下个断然后 OD断下时的值就是EAX的值

//如果快捷杠上没有技能的话直接使用游戏崩溃

写代码测试

//[[[[[924E0C]+1C]+20]+1*4+0BA8]+C]+0*4 

MOV EDX,[EAX]

MOV ECX,EAX

CALL [EDX+8]

F1完整代码为

MOV EAX,[924E0C]

MOV EAX,[EAX+1C]

MOV EAX,[EAX+20]

MOV EAX,[EAX+0BAC]

MOV EAX,[EAX+0C]

MOV EAX,[EAX+0]   //0 fn = (fn-1)*4

MOV EDX,[EAX]

MOV ECX,EAX

CALL [EDX+8]

//F1数组+基本CALL

 
下面这个CALL不是的
////
MOV EDI,[924E0C]
MOV EDI,[EDI+1C]
MOV EDI,[EDI+20]
MOV EDI,[EDI+0BAC]
MOV EDI,[EDI+0C]
MOV EDI,[EDI+0]
MOV EAX,[EDI]
PUSH 0
MOV ECX,EDI
CALL [EAX+14]
这个CALL也断但测试代码无效
这个CALL下过断后用代码注入 OD也会断 上面 的CALL不会断的
 





posted @ 2012-05-30 10:52  XE2011  阅读(580)  评论(0编辑  收藏  举报