3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 9926|回复: 17
打印 上一主题 下一主题

[MOD] 使用Byteman对游戏进行字节码注入

[复制链接]

4

主题

329

帖子

959

积分

超级玩家

Rank: 5Rank: 5

贡献度
158
金元
3268
积分
959
精华
0
注册时间
2007-12-25
跳转到指定楼层
主题
发表于 2018-2-2 14:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kingdjh 于 2018-2-3 10:24 编辑

使用Byteman可以实现不对游戏本来文件做任何修改的情况下实现本来需要修改文件才能实现的功能
达到一次编写,更新后也能用

需要用到的工具:
   0. jdk8
下载好jd-gui和byteman,把byteman的所在目录加到环境变量的Path中

然后用jd-gui打开游戏目录下的jar包,反编译出Java源码

接着发挥你的奇思妙想找到要注入的地方(需要一定的编程知识)
例如我想改变初始金钱,先到选择角色这里,然后看看哪里注入方便,最后决定在设置初始卡组(setDeck)的地方注入

到游戏目录下编写注入脚本
<保存为st.btm,再在游戏目录下,编写个st.bat文件
<再编写个检查脚本是否正确的stcheck.bat文件
<都弄好后双击st.bat启动游戏,选择完角色后看看初始金钱

上述的脚本文件打包
SlayTheSpire.zip (1.33 KB, 下载次数: 22)

上面是byteman在游戏启动前注入,接下来介绍byteman在游戏开始后注入
先编写好注入脚本,建议把注入脚本放到%BYTEMAN_HOME%\bin目录下,使用方便
然后打开win + R,输入cmd打开cmd
在cmd输入
<跳到byteman目录下,再输入
<查看游戏的pid,一般是没有名字的那个

我这里是14680,然后注入byteman,在cmd里输入
<14680是刚才通过jps得到的游戏pid,然后装载脚本
<或者卸载脚本
<

小提示,通过修改游戏目录下的config.json可以实现steam启动游戏的时候自动注入byteman
<把D:\Tools\byteman\byteman-download-4.0.0替换成你们的byteman路径,记得\要换成\\
把st.btm换成你们的注入脚本名

最后希望大家把自己写的好玩的脚本发到论坛上来,分享乐趣!
回复

使用道具 举报

0

主题

116

帖子

184

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1843
积分
184
精华
0
注册时间
2010-12-18
舒服的沙发
发表于 2021-11-3 04:07 | 只看该作者
比较离谱的是,btm规则里单用-是没用的,你得用+-它才识别得出来,没看文档就想到这点得亏我经验还算丰富
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2026-4-22 08:51 , Processed in 0.030182 second(s), 18 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表