JVM 字节码操作工具 AsmTools 的安装及使用方法
AsmTools 是什么
AsmTools 是OpenJDK CodeTools项目中提供修改JVM字节码的工具。
其他操作字节码的工具
为什么不用编译完成的产物
官网上如果提供可用的编译完成产物,直接下载使用即可,但是目前提供的Downloads - Release是一个404状态的状态链接,所以可行的方案就是将源码下载后进行编译。
如何从源码进行编译
获取源码
hg clone http://hg.openjdk.java.net/code-tools/asmtools
准备编译工具
编译前需要准备好两个工具:
- JDK 8.0+
- Ant 1.8+
这里JDK的安装就不再赘述,Ant的安装在macOS上可以选择使用brew或者macport包管理工具安装:
使用brew安装:brew update & brew install ant
执行编译命令
cd /path/to/asmtools/build
ant build
默认会在 /path/to/asmtools
路径的平行路径下生成asmtools的编译结果,以当前AsmTools7.0版本为例,生成的文件夹名为asmtools-7.0-build
其中asmtools-7.0-build/release/lib/asmtools.jar
就是我们希望得到的AsmTools lib类库。
AsmTools的使用方法
反汇编(由class文件生成JASM格式文件)
AsmTools 关键类org.openjdk.asmtools.jdis.Main
命令使用方法:
$ java -cp asmtools.jar org.openjdk.asmtools.jdis.Main [options] filename.clas
汇编(JASM -> class)
ASMTools 关键类org.openjdk.asmtools.jasm.Main
命令使用方法:
$ java -cp asmtools.jar org.openjdk.asmtools.jasm.Main [options] filename.jasm
其实AsmTools除了支持JASM格式的文件之外还支持JCOD格式,详情请参照Jasm vs. Jcod
更多AsmTools的用法请参照Tool Usage