
前言
首先谢谢test234老师教我蘑菇逆向工程基础、谢谢ling总耐心的答疑、谢谢牛总提供的《GMS95中文支援地址》。尤其感谢teto大佬提供的开源GMS095项目kinoko。
这件事我从有这个想法、建立文件夹和笔记word文档开始到今天,已经过了12天。像极了以前玩《怪物猎人4G》,作为萌新一直打不过樱火龙,就天天和她见面,把樱火龙当老师,后面大概过了一个星期终于能完成对樱火龙的狩猎了,非常有成就感。虽然后来以在《怪物猎人世界》里暴揍了几百只激昂金狮子的视角来看,樱火龙简单了太多,但也是得先迈过樱火龙,才能见到后面的大师位猎人的世界。

Release
1.客户端
在kinoko client项目中的helper.cpp里找到函数
代码登录后可见
在其中添加
代码登录后可见
2.服务端
在kinoko服务端项目中找到的NioBufferInPacket.java,重写以下函数
代码登录后可见
以及,NioBufferOutpacket.java最好一并修改,修改此处可支持中文scripts
代码登录后可见
留下的疑问
1.原来我写的decodeString有什么问题?
大概在半个星期之前,我的decodeString()是这样写的(没有把decodeString(int)的定义同步修改)
代码登录后可见
甚至尝试了一个debug输出所有编码的版本
代码登录后可见
然后发现新建角色时,服务端显示客户端发包发来的是“3F 3F 3F 3F 3F”,无论用什么编码(包括GBK)都无法解析。当时因此断定是客户端还需要修改。但是事实证明,我没修改客户端,只是重写了decodeString,服务端就显示收到了正常的客户端发包。我目前还没深入理解这是为什么。
2.请教卡门问题
我知道卡门问题如果要解决可能会很复杂,直接找大佬要答案也很冒昧。但是我想简单请教一下,为什么我动的明明是和传送门不相关的函数,却会导致卡门问题呢?如果我用x32dbg.exe动态调试,我应该从哪个断点去切入,观察其原理呢?解决的思路大致是什么呢?