- 注册时间
- 2010-8-21
- 最后登录
- 2017-5-30
- 在线时间
- 4 小时
编程入门
- 魔鬼币
- 638
|
========快捷键============
:00546803 A1DC2C9000 mov eax, dword ptr [00902CDC]
:00546808 53 push ebx
:00546809 55 push ebp
:0054680A 56 push esi
:0054680B 57 push edi
:0054680C 8BF9 mov edi, ecx
:0054680E 8B481C mov ecx, dword ptr [eax+1C]
:00546811 8B5924 mov ebx, dword ptr [ecx+24]//人物基址
.........................
然后今过几番跳转
:005469C3 83FE30 cmp esi, 00000030 //esi保存为按键值,判断是否为数字键(0x30-0x39)
:005469C6 723E jb 00546A06 //如果不是数字键就跳转到继续判断是否F1-F8
:005469C8 83FE39 cmp esi, 00000039
:005469CB 7739 ja 00546A06 //如果不是数字键就跳转到继续判断是否F1-F8
:005469CD E87ED3FBFF call 00503D50 //此call给eax赋值,但始终eax是1
:005469D2 8B8483EC080000 mov eax, dword ptr [ebx+4*eax+000008EC] //因此相当于 ebx+4+0x08ec=[[基址]+&h24]+8F0
下面是F1-F8
:00546A06 83FE70 cmp esi, 00000070 //判断是否为F1-F8
:00546A09 7218 jb 00546A23
:00546A0B 83FE77 cmp esi, 00000077
:00546A0E 7713 ja 00546A23
:00546A10 E84BD3FBFF call 00503D60
:00546A15 8B8483F8080000 mov eax, dword ptr [ebx+4*eax+000008F8]//[[基址]+&h24]+8FC
接下来快捷键call
:005469E8 8BC8 mov ecx, eax
:005469EA E8B164F5FF call 0049CEA0//经过这函数快捷键指针就形成了,也就是2000老大的:KuaiJie=[[[[[[基址]+&h24]+8F0]+C]+4*n]
:005469EF 85C0 test eax, eax
:005469F1 7407 je 005469FA
:005469F3 8B10 mov edx, dword ptr [eax]
:005469F5 8BC8 mov ecx, eax
:005469F7 FF5208 call [edx+08]//这就是快捷键call了
这是那个0049CEA0的call
:0049CEA0 8B442404 mov eax, dword ptr [esp+04]
:0049CEA4 85C0 test eax, eax
:0049CEA6 7C1E jl 0049CEC6
:0049CEA8 3B4110 cmp eax, dword ptr [ecx+10]
:0049CEAB 7D19 jge 0049CEC6
:0049CEAD 8B490C mov ecx, dword ptr [ecx+0C]//这里就是+0xc了
:0049CEB0 8A542408 mov dl, byte ptr [esp+08]
:0049CEB4 84D2 test dl, dl
:0049CEB6 8D0C81 lea ecx, dword ptr [ecx+4*eax]//eax放的就是快捷键的位置,以0开始
:0049CEB9 8B01 mov eax, dword ptr [ecx]
:0049CEBB 740B je 0049CEC8
:0049CEBD C70100000000 mov dword ptr [ecx], 00000000
:0049CEC3 C20800 ret 0008
然后提一下使用的工具,如果查特征码,可使用的工具太多了,
比如OD、w32dasm、ultraedit、或者搜索文件或者内存的软件等等都行
在od 可以按ctrl+S进行代码块搜索(或者:右键—〉查找—〉命令序列)。
这样你就可以直接将汇编代码复制过去,但是注意,一定要把一些注释给删掉,只保留汇编代码
比如将下面的代码复制过去搜索,就找到快捷键的代码了。
mov edx, dword ptr [eax]
mov ecx, eax
call [edx+08]
对于别的特征代码,比如含有call、jmp等指令的,是无法这样搜索的,因为游戏更新了,肯定
相对偏移地址变了,那就你找别的稳定不含偏移地址的代码来搜索。
还有种方法就是搜索纯二进制机器码了,比如上面的,你可以搜索:8B 10 8B C8 FF 52 08
找到call之后呢,相对应的什么xx基址,你就可以在附近代码找了,仔细研究你会发现他们的。
|
|