上次说到ZEVMS这个服务端有可能使用了修改版本的JVM,导致无法dump内存、打印线程,也无法直接从外部把字节码暴露出来,那我们这次继续分析下这个程序是如何运行的,从原理着手考虑有什么办法。

整个服务端的入口是“启动服务端.exe”。是个exe文件,但是显然最终是运行了个java程序,所以我们实际看看这个程序内部是怎么运行的吧。

上x64dbg(这个程序OllyDbg无可奈何,x64dbg有效)

首先加载的是ntdll,我们直接“run to user code”走到“启动服务端.exe”的入口
x64dbg1

可以看到这个程序很短,单步几次后,在栈上看到了调用的具体bat文件:000000000014FE28 00000000006A9D10 L”C:\\Users\\zhong\\AppData\\Local\\Temp\\6084.tmp\\6085.tmp\\6086.bat”

x64dbg2

资源管理器上找到相应路径,找到该文件

@shift /0
@echo off
color 1A
set PATH=jdk\jre\bin
set JRE_HOME=jdk\jre
set JAVA_HOME=jdk\jre\bin
set CLASSPATH=.;dist\*
java -server -Dnet.sf.odinms.wzpath=wz gui.ZEVMS
pause

可以看到它使用的确实是程序自带的jdk,而且是server版本的,我们将这个bat文件放到游戏服务端的根目录,直接运行该文件,服务端也可以正常启动。

至此,我们找到实际使用的jvm和实际的main函数入口”gui.”接下来可以用更多的手段来分析这个程序了,后续我考虑使用java agent技术发掘更多的信息达成目的。

如无特殊声明,本文为Zhonghcc原创文章,转载请注明: 转载自Zhonghcc 's Blog
本文链接地址: ZEVMS 冒险岛服务端V79 ver2 破解服务端登录人数限制(2)x64dbg找到程序入口

 回复

(必须)

(必须)

© 2020 Zhonghcc 's Blog Suffusion theme by Sayontan Sinha