去年想追忆一下网游冒险岛,作为一个老年人肯定是玩v079版本,找到一个服务端zevms功能不错,但是服务端只能一个人登录,作为技术宅我想方设法绕过了限制,记录一下。
声明,该版本是2018年底的版本,现在已不能使用,新版的zevms v79服务端限制已经扩大为6人,无需破解,为了避免侵害zev的利益,所以现在才发布此方法。

1. 目录结构和反编译

该服务端和其他服务端一样,是MySQL作为数据库,Java作为服务端的,数据库的用户名密码是提供的,无需多费心思,大概查了一下没有限制人数的配置,所以尝试分析下java服务端的代码

解压dist目录下的ZEVMS.jar,得到一堆class文件,这个作者做了很多修改工作,提供了很多特性,是个很勤劳的服主。很奇妙的是他喜欢用中文作为类名、方法名和变量名,或许我应该拿他的示例去回答“为什么很少有人用中文编程?”这个知乎热帖

zevms.jar

尝试使用JD-GUI对.class文件进行反编译。但是失败了。难道是加密了?为了一探究竟,用WINHEX工具打开其中一个.class文件瞧瞧,开头四个十六进制是0xC1DEBEDE,而不是我们熟悉的0xCAFEBABE,而且文件头下部也是乱码,看来是加密了

winhex1

加密了的.class文件

winhex2

对照个正常的.class文件

我们知道,很多java程序为了防止破解,会自己写classLoader保护代码,读入文件后再解密为正常的字节码,但这种方式可以将内存中解密后的字节码dump出来就是原文了,说做就做,尝试jstak、jmap attach到这个进程上先看看情况。

$ ./jmap.exe 8696
Attaching to process ID 8696, please wait...
Error attaching to process: Windbg Error: WaitForEvent failed!
sun.jvm.hotspot.debugger.DebuggerException: Windbg Error: WaitForEvent failed!
        at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.attach0(Native Method)
        at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.attach(WindbgDebuggerLocal.java:152)
        at sun.jvm.hotspot.HotSpotAgent.attachDebugger(HotSpotAgent.java:671)
        at sun.jvm.hotspot.HotSpotAgent.setupDebuggerWin32(HotSpotAgent.java:569)
        at sun.jvm.hotspot.HotSpotAgent.setupDebugger(HotSpotAgent.java:335)
        at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:304)
        at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:140)
        at sun.jvm.hotspot.tools.Tool.start(Tool.java:185)
        at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
        at sun.jvm.hotspot.tools.PMap.main(PMap.java:72)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at sun.tools.jmap.JMap.runTool(JMap.java:201)
        at sun.tools.jmap.JMap.main(JMap.java:130)
$ ./jstack 8696
8696: ▒ܾ▒▒▒▒ʡ▒

看样子不行呢,有可能这个程序自己修改了虚拟机,不允许用这些探查工具。但是我是不会气馁的,预知后事如何,且看下回分解。

如无特殊声明,本文为Zhonghcc原创文章,转载请注明: 转载自Zhonghcc 's Blog
本文链接地址: ZEVMS 冒险岛服务端V79 ver2 破解服务端登录人数限制(1)分析、尝试反编译

 回复

(必须)

(必须)

© 2020 Zhonghcc 's Blog Suffusion theme by Sayontan Sinha