没钱 还非 配不上这个高贵的游戏
本文给大伙儿引发杀戮尖塔修改class文件的方式,杀戮尖塔中玩众们可以独自来修改class文件,来在游戏中获得想要的形势。
从网络看到有两种修改方式。一种是用某些工具把整个jar包完全反编译,然后就像创作游戏一样修改代码后再从头打包。另一种是修改独自的class文件。
理论上说第一种是最佳的,由于可以想如何改就如何改,但仔细想想,那不即是自学java一样么,咱们只想简朴改改游戏,并不想搞的那么繁复不是。
因此我钻研的是第二种,测验胜利。如今说说详细环节。
例如游戏里会中一个confusion”混乱“消极形势,卡牌损耗是0-3随机的。要随时有这个形势,并总能随到0多好,快要这个!(实在有时候切换为英文版更便利看到核心词)
第一步
用 DJ java decomper 打开jar游戏包,在弹出的窗口上抉择 search,文件类别*.class,搜寻文本“confusion”。
等一会找到3个文件包括这个词。
第二步
用 java decompiler 打开jar包(名字有点像,然而另一个工具),差异定位到这3个文件,搜寻confusion找到代码,然后察看代码。
你只需要轻微有一点点英文基本,就能看到核心代码在 AbstractPlayer.class这里,random(0,3)就是随机返回0-3。这个代码属于 public void draw(int numCards)
第三步
很可惜,即使已经看到了要改的代码,但并无法在这里把3改成0。由于class文件实际是难以体会的jvm代码,刚刚仅是工具帮你切换为轻易体会的明文代码罢了。
用winrar打开jar包,把AbstractPlayer.class解压出来。用jclasslib bytecode viewer打开。(安装这个工具前还要先装一个java runtime,java主页下载)
在Methods里面可以看到有两个draw,点击Code就能看到jvm机器码了。一对比很轻易确定第一个是咱们找的。
核心是把iconst_3改成iconst_0。接下来就是提炼这段机器码。
在最下面找到iconst_0,点那个showDescription,可以弹出一个网页显示出这个命令的机器码是 3
iconst_3 是6
invokestatic 是b8 ,后面还有2bit的参数,#392切换为16进制是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,保留。
把修改后的class文件笼盖回去,完成。
是不是炒鸡简朴?
或许是,但又似乎不是,你尝尝就了解了。
是个好游戏,就是人少了一点,其他的都无所谓