99.60(62)GSGM公告和移动命令修改,让中文客户端正常使用移动和GM公告
前面我已经发过帖子说明了99.60GS因为是越南版的,所以部分信息采用了UNICODE编码,原理上就是这样,GS读取了服务端的信息文件,这个过程是ASCII编码,但是越南版服务端通过WideCharToMultiByte这个函数将信息编码转换为UNICODE编码发送给客户端,让越南客户端能够正常显示信息,同样,越南版客户端移动,GM公告等信息也是以UNICODE编码的形式发送给服务端GS的,而9c1.0客户端发送这些信息是以ASCII的形式发送,所以如果你用9c的客户端登陆越南版的9960 9962 9965服务端,会出现移动命令失效,信息显示不完全的问题。
知道了问题所在,就可以修改GS了,原理就是让服务端GS读取ASCII编码或处理ASCII编码,不再转换为UNICODE编码。
另:如果哪位有高于99.65版本的未破解GS,联系我的QQ9908481哦
=====================================
这里是GM公告部分的处理方法(nop掉红色部分)
0042CBDA 80BD 90ECFFFF>CMP BYTE PTR SS:[EBP-1370],21 判断是否为GM命令
0042CBE1 74 12 JE SHORT GameServ.0042CBF5
0042CBE3 80BD 90ECFFFF>CMP BYTE PTR SS:[EBP-1370],2F 判断是否为/命令
0042CBEA 0F84 17010000 JE GameServ.0042CD07
0042CBF0 E9 97010000 JMP GameServ.0042CD8C
0042CBF5 837D F0 02 CMP DWORD PTR SS:[EBP-10],2
0042CBF9 0F8E 03010000 JLE GameServ.0042CD02
0042CBFF 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
0042CC02 0FBE51 0E MOVSX EDX,BYTE PTR DS:[ECX+E]
0042CC06 85D2 TEST EDX,EDX
0042CC08 0F85 F4000000 JNZ GameServ.0042CD02
0042CC0E 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0042CC11 8B88 A0010000 MOV ECX,DWORD PTR DS:[EAX+1A0]
第二处修改
0042CC42 |. 83C0 0F ADD EAX,0F
改为
0042CC42 83C0 0E ADD EAX,0E
移动命令部分处理(这里是原来的代码)
0042CD07 837D F0 02 CMP DWORD PTR SS:[EBP-10],2
0042CD0B 7E 7F JLE SHORT GameServ.0042CD8C
0042CD0D 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
0042CD10 0FBE42 0E MOVSX EAX,BYTE PTR DS:[EDX+E]
0042CD14 85C0 TEST EAX,EAX
0042CD16 75 74 JNZ SHORT GameServ.0042CD8C
0042CD18 68 18316600 PUSH GameServ.00663118
0042CD1D 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
0042CD20 83C1 0E ADD ECX,0E
0042CD23 51 PUSH ECX
0042CD24 E8 F75A1300 CALL GameServ.00562820
0042CD29 83C4 08 ADD ESP,8
0042CD2C C685 38EEFFFF>MOV BYTE PTR SS:[EBP-11C8],0
0042CD33 B9 FF030000 MOV ECX,3FF
0042CD38 33C0 XOR EAX,EAX
0042CD3A 8DBD 39EEFFFF LEA EDI,DWORD PTR SS:[EBP-11C7]
0042CD40 F3:AB REP STOS DWORD PTR ES:[EDI]
0042CD42 66:AB STOS WORD PTR ES:[EDI]
0042CD44 AA STOS BYTE PTR ES:[EDI]
0042CD45 6A 00 PUSH 0 ; /pDefaultCharUsed = NULL
0042CD47 6A 00 PUSH 0 ; |pDefaultChar = NULL
0042CD49 68 00100000 PUSH 1000 ; |MultiByteCount = 1000 (4096.)
0042CD4E 8D95 38EEFFFF LEA EDX,DWORD PTR SS:[EBP-11C8] ; |
0042CD54 52 PUSH EDX ; |MultiByteStr
0042CD55 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] ; |
0042CD58 50 PUSH EAX ; |WideCharCount
0042CD59 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8] ; |
0042CD5C 83C1 0D ADD ECX,0D ; |
0042CD5F 51 PUSH ECX ; |WideCharStr
0042CD60 6A 00 PUSH 0 ; |Options = 0
0042CD62 68 EA040000 PUSH 4EA ; |CodePage = 4EA
0042CD67 FF15 087FD906 CALL DWORD PTR DS:[<&KERNEL32.WideCharTo>; \WideCharToMultiByte
0042CD6D 0FBF55 0C MOVSX EDX,WORD PTR SS:[EBP+C]
0042CD71 52 PUSH EDX
0042CD72 8D85 38EEFFFF LEA EAX,DWORD PTR SS:[EBP-11C8]
0042CD78 50 PUSH EAX
0042CD79 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
0042CD7C 51 PUSH ECX
0042CD7D B9 08AF6E05 MOV ECX,GameServ.056EAF08
0042CD82 E8 F67EFDFF CALL GameServ.00404C7D
改为这样,nop掉部分,添加部分
0042CD07 837D F0 02 CMP DWORD PTR SS:[EBP-10],2
0042CD0B 7E 7F JLE SHORT gameserv.0042CD8C
0042CD0D 90 NOP
0042CD0E 90 NOP
0042CD0F 90 NOP
0042CD10 90 NOP
0042CD11 90 NOP
0042CD12 90 NOP
0042CD13 90 NOP
0042CD14 90 NOP
0042CD15 90 NOP
0042CD16 90 NOP
0042CD17 90 NOP
0042CD18 90 NOP
0042CD19 90 NOP
0042CD1A 90 NOP
0042CD1B 90 NOP
0042CD1C 90 NOP
0042CD1D 90 NOP
0042CD1E 90 NOP
0042CD1F 90 NOP
0042CD20 90 NOP
0042CD21 90 NOP
0042CD22 90 NOP
0042CD23 90 NOP
0042CD24 90 NOP
0042CD25 90 NOP
0042CD26 90 NOP
0042CD27 90 NOP
0042CD28 90 NOP
0042CD29 90 NOP
0042CD2A 90 NOP
0042CD2B 90 NOP
0042CD2C 90 NOP
0042CD2D 90 NOP
0042CD2E 90 NOP
0042CD2F 90 NOP
0042CD30 90 NOP
0042CD31 90 NOP
0042CD32 90 NOP
0042CD33 90 NOP
0042CD34 90 NOP
0042CD35 90 NOP
0042CD36 90 NOP
0042CD37 90 NOP
0042CD38 90 NOP
0042CD39 90 NOP
0042CD3A 90 NOP
0042CD3B 90 NOP
0042CD3C 90 NOP
0042CD3D 90 NOP
0042CD3E 90 NOP
0042CD3F 90 NOP
0042CD40 90 NOP
0042CD41 90 NOP
0042CD42 90 NOP
0042CD43 90 NOP
0042CD44 90 NOP
0042CD45 90 NOP
0042CD46 90 NOP
0042CD47 90 NOP
0042CD48 90 NOP
0042CD49 90 NOP
0042CD4A 90 NOP
0042CD4B 90 NOP
0042CD4C 90 NOP
0042CD4D 90 NOP
0042CD4E 90 NOP
0042CD4F 90 NOP
0042CD50 90 NOP
0042CD51 90 NOP
0042CD52 90 NOP
0042CD53 90 NOP
0042CD54 90 NOP
0042CD55 90 NOP
0042CD56 90 NOP
0042CD57 90 NOP
0042CD58 90 NOP
0042CD59 90 NOP
0042CD5A 90 NOP
0042CD5B 90 NOP
0042CD5C 90 NOP
0042CD5D 90 NOP
0042CD5E 90 NOP
0042CD5F 90 NOP
0042CD60 90 NOP
0042CD61 90 NOP
0042CD62 90 NOP
0042CD63 90 NOP
0042CD64 90 NOP
0042CD65 90 NOP
0042CD66 90 NOP
0042CD67 90 NOP
0042CD68 90 NOP
0042CD69 90 NOP
0042CD6A 90 NOP
0042CD6B 90 NOP
0042CD6C 90 NOP
0042CD6D 0FBF4D 0C MOVSX ECX,WORD PTR SS:[EBP+C]
0042CD71 51 PUSH ECX
0042CD72 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
0042CD75 83C2 0D ADD EDX,0D
0042CD78 52 PUSH EDX
0042CD79 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0042CD7C 50 PUSH EAX
0042CD7D B9 08AF6E05 MOV ECX,gameserv.056EAF08
0042CD82 E8 F67EFDFF CALL gameserv.00404C7D
二进制替换UE修改方法,注意拷贝代码的时候,论坛自动的的防拷贝后缀,那些后缀要删除掉哦
1 搜索
CODE:
8B 4D 08 0F BE 51 0E 85 D2 0F 85 F4 00 00 00
[Copy to clipboard]
替换为
CODE:
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
[Copy to clipboard]
2 搜索
CODE:
8B 55 08 0F BE 42 0E 85 C0 75 74 68 18 31 66 00 8B 4D 08 83 C1 0E 51 E8 F7 5A 13 00 83 C4 08 C6
85 38 EE FF FF 00 B9 FF 03 00 00 33 C0 8D BD 39 EE FF FF F3 AB 66 AB AA 6A 00 6A 00 68 00 10 00
00 8D 95 38 EE FF FF 52 8B 45 F0 50 8B 4D 08 83 C1 0D 51 6A 00 68 EA 04 00 00 FF 15 08 7F D9 06
0F BF 55 0C 52 8D 85 38 EE FF FF 50 8B 4D F8 51 B9 08 AF 6E 05
[Copy to clipboard]
替换为
CODE:
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
0F BF 4D 0C 51 8B 55 08 83 C2 0D 52 8B 45 F8 50 B9 08 AF 6E 05
[Copy to clipboard]
这里移动的修改还有其他的方法,自己可以看看!
其他UNICODE相关的编码修改类似这里的修改,自己多研究研究了!
转贴请注明vzkj.com mz520K
支持一下小站
http://www.18pk.cn服务端移动文件,下载后放data中,wtf信息文件可以用冠军那个汉化的Message_chs.wtf