You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否获取关联Java(TM) SE Binary的jar文件用JD-GUI反编译修改

结论

你的需求完全可以实现。你用JD-GUI找不到对应文件,本质是你打开的那个需要输入凭证的jar只是启动校验器,不是真正的游戏核心逻辑包,启动器校验通过后会释放/加载真正的游戏jar到独立路径运行,所以你直接反编译启动器文件当然找不到游戏代码。

第一步:定位真实运行的游戏核心jar

  • 等程序通过Java(TM) Platform SE Binary启动完成后,打开任务管理器找到对应Java进程,右键选择「打开文件所在位置」,就能直接看到进程加载的所有文件,从中筛选.jar后缀的文件,复制到其他非临时目录备份——注意如果启动器是把核心jar释放到系统临时目录,一定要在程序运行期间复制,关闭程序后临时文件会被自动清除。
  • 如果任务管理器定位到的是包装后的exe文件,直接打开系统自带的「资源监视器」,切换到CPU tab,在关联句柄搜索框选中对应的Java进程,搜索.jar关键词,就能列出进程当前加载的所有jar包的完整路径,逐个复制出来排查即可。

第二步:反编译与代码修改

  • 拿到核心游戏jar后,优先用Recaf或Bytecode Viewer打开反编译,这两个工具对混淆代码、高版本Java字节码的兼容性远好于JD-GUI,不会出现JD-GUI那样无法打开、代码反编译错乱的问题。
  • 不要直接用JD-GUI导出的源码修改重打包,JD-GUI反编译出的代码存在大量语法错误,根本无法正常编译。正确修改流程:
    • jar本质是zip格式压缩包,直接用压缩软件打开即可,不需要额外解压
    • 找到你要修改的逻辑对应的class文件,单独拖出来用反编译工具转成可读的Java代码
    • 用和原游戏运行版本一致的JDK把修改后的Java代码重新编译为class文件
    • 把新生成的class文件拖回jar包对应路径,覆盖原有class文件
  • 如果jar包做了签名校验,覆盖文件后直接删除jar包内META-INF目录下所有后缀为.SF、.DSA、.RSA的签名文件,否则修改后的jar会因为签名校验不通过无法启动。

特殊情况处理

如果定位到的jar包内class是加密的,直接反编译会得到乱码,你可以给Java进程加启动参数-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005开启调试端口,等类加载器解密字节码后,直接从内存中dump出真实的class文件再做修改即可。部分启动器会自带jar完整性校验,如果修改后启动报错,先反编译启动器jar找到校验逻辑,跳过校验步骤就能正常运行修改后的游戏包。

参考图示:V236程序

内容的提问来源于stack exchange,提问作者Nerfed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 21:30:46