从网上修改有两种方法。一种是用一些工具把整个jar包完全反编译,然后像做游戏一样修改代码然后重新打包。另一种是修改单独的类文件。
理论上第一种是最好的,因为你可以随心所欲的改,但是仔细想想,和自己学java不一样。我们只是想简单地改变游戏,不想把它变得那么复杂。
于是我研究了第二个,试验成功。现在说说具体步骤。
比如游戏中会出现“混乱”的负面状态,卡耗0-3随机。如果你想在任何时候都是这种状态,并且一直到0,就是这样!(其实有时候切换到英文版更容易看到关键词)
第一步
用DJ java反编译打开jar游戏包,选择搜索,文件类型*。类,并在弹出窗口中搜索文本“混淆”。
回头我找三个包含这个词的文件。
第二步
用java decompiler打开jar包(名字差不多,不过是另一个工具),分别定位这三个文件,通过Fusion搜索代码,然后观察代码。
只需要一点英语知识就能看出关键代码在AbstractPlayer.class这里,random(0,3)只是随机返回0-3。这个代码属于公共void draw(int numCards)
第三步
遗憾的是,虽然你看到了要改的代码,但是你不能在这里把3改成0。因为类文件实际上是一个难以理解的jvm代码,它只是一个帮助你转换成易于理解的纯文本代码的工具。
用winrar打开jar包,提取AbstractPlayer.class.用jclasslib字节码查看器打开它。(在安装这个工具之前,需要安装一个java运行时,可以通过java官网下载)
在方法中,你可以看到有两个平局。单击Code查看jvm机器码。很容易确认第一个就是我们要找的。
关键是把iconst_3改成iconst_0。下一步是提取这个机器码。
在底部找到iconst_0,点击showDescription,会弹出一个网页,显示这个命令的机器代码是3。
Iconst_3是6
Invokestatic是b8,后面是一个2-2bit的参数,#392到十六进制的转换是0x188,所以这里的jvm代码是b8 01 88。
这两个命令的jvm代码是03 06 b8 01 88。
最后一档
用十六进制编辑器打开AbstractPlayer.class。(这样的软件有很多,比如010editro,winhex等。可以随便用),搜03 06 b8 01 88。然后改成03 03 b8 01 88保存。
覆盖修改后的类文件并完成。
炒鸡简单吗?
也许是,但似乎不是。试试吧。
文章内容来源于网络,仅供参考!本文链接:https://www.chaoduyl.com/wanyouxi/84ddee6d1c699d2f.html