ubuntu环境asmtools安装及使用

asmtools是openjdk提供的java字节码汇编及反汇编工具,学习JVM时需要的工具,下面是这个工具的安装及使用过程

一、环境
系统-Ubuntu 16.04.4
JDK version 8.0
Ant version 1.8 or later
参考文档 https://wiki.openjdk.java.net/display/CodeTools/How+to+build+AsmTools

二、安装ant(https://ant.apache.org/bindownload.cgi

image.png
#安装包位置
cd /usr/local
#解压
tar -zxvf apache-ant-1.9.14-bin.tar.gz
#配置环境变量
vim /etc/profile
#添加如下地址
export PATH=/usr/local/apache-ant-1.9.14/bin:$PATH
#保存退出刷新配置
:wq
source /etc/profile
#执行ant命令看是否
ant

三、asmtools工具下载

#安装hg工具
apt install mercurial
#拉去asmtools工具
hg clone http://hg.openjdk.java.net/code-tools/asmtools
#构建asmtools.jar
cd /asmtools/build
ant
#此时asmtools根目录出现asmtools-7.0-build文件夹

四、使用asmtools修改java字节码

#创建Foo.java文件
echo '
public class Foo {
    public static void main () {
        boolean flag = true;
        if(flag) System.out.println("Hello,Java!");
        if(flag == true) System.out.println("Hello,JVM!");
    }
}' > Foo.java

#编译Foo.java 编译后的Foo.class 要放在classpath环境变量路径下
javac Foo.java
#执行Foo.class
java Foo
#使用asmtools修改字节码
java -jar /home/yaozun/asmtools-7.0-build/release/lib/asmtools.jar jdis Foo.class > Foo.jasm.1
awk 'NR==1,/iconst_1/{sub(/iconst_1/, "iconst_2")} 1' Foo.jasm.1 > Foo.jasm
java -jar /home/yaozun/asmtools-7.0-build/release/lib/asmtools.jar jasm Foo.jasm

两次执行结果如图所示


image.png

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容