- 注册时间
 - 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基址,你就可以在附近代码找了,仔细研究你会发现他们的。 
 |   
 
 
 
 |