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的数组 注意不要求换技能 只用普通攻击切换
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052092189.png)
dd 154B88B0
硬件写入
选测试地址是否正确 看特征
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052106550.png)
下断后,回到游戏里 把普通攻击拖到第1格子上
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052112024.jpg)
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/20120530105211355.png)
按F9 删除硬件断点
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052122731.png)
回到游戏里拖动技能
OD断下来
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052141171.png)
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052141105.png)
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
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052153023.png)
dd [[[[0A94464]+1C]+20]+0C]+0*4
测试结果不不指向任何地方
继续往下找
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052151845.png)
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的地址一样 结果正确
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052163448.png)
F1数组=[[[[[0A94464]+1C]+20]+0C3C]+0C]+0*4 //F1=0,F2=1,..,Fn=Fn-1
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052172792.png)
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052172759.png)
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052172726.png)
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/20120530105218185.png)
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052181232.png)
查找数据
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052195102.png)
按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
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052196988.png)
//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]
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052203019.png)
正确
OD Ctrl+S定位码
//上面的JMP
ADD EBX,-3D
PUSH 0
PUSH EBX
//////////////////////////////////////
用CE找到这个地址 094169A0
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052202429.png)
每次用其他技能往快捷键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不是的
////
![](https://images.cnblogs.com/cnblogs_com/xe2011/201205/201205301052251377.png)
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不会断的
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步