好用的`现代 Java 字节码编辑器 - Recaf`

2,024 阅读1分钟

使用场景是什么:

github.com/Col-E/Recaf

快速、方便编辑 jar,插入代码。

181653807918_.pic.jpg

有一个可接入的 jar

这里为了操作便捷,我简单封装一点代码生成一个 jar 文件。代码不复杂,只有简单的日志输出。编码环境使用 VSCODE,该工具导出 jar 还是比较便捷。

VSCode 导出 jar:

打开 JAVA PROJECTS,接着选中当前需要导出的项目,最后一键点击右边的箭头 -->,稍等片刻项目同级目录下就有一个 jar 生成。

image.png

image.png

接入说明:

//初始化
GCSDK.getInstance().init(ChannelType.TYPE_VIVO, new SdkInitListener() {

            @Override
            public void initBegin() {

            }

            @Override
            public void initFail(String msg, int code) {

            }

            @Override
            public void initSuccess() {

            }

        });

//登录
GCSDK.getInstance().login();
//登出
GCSDK.getInstance().logout();
//退出游戏
GCSDK.getInstance().exitGame();

Demo 开始接入

现在手上有两个 jar,一个是我们需要运行的(宿主),一个是我们要接入的(依赖)。

1⃣️ 解压获得 class 文件: jar -xvf ****.jar

首先使用 jar 命令分别把这两个文件转换获得 class

依赖 jar

image.png

宿主 jar

image.png

两个 class 文件合并:

MANIFEST.MF 文件取宿主中的,因为需要启动类,其他信息看情况取舍

image.png

宿主 MANIFEST.MF 内容

Manifest-Version: 1.0
Main-Class: com.demo.jsonlili.GameApp

2、修改宿主 class 文件,加入接入代码

针对单个 class 文件修改,我借助 Recaf工具

启动编辑工具:

java -jar recaf-2.21.13-J8-jar-with-dependencies.jar

image.png

没有导包是不正确的,找不到类。

image.png

正确导包:

image.png

修改完毕,导出 jar

image.png

运行检验,结果正确

image.png


字节码编辑工具不止一个

完成类似场景的手段、方案也不在少数

莫要纠结一处,了解更多有何不可呢