Asmtools工具修改Java字節(jié)碼,并了解boolean類型在虛擬機中的表示方法
在學習極客時間——《深入拆解JVM虛擬機》專欄中,有用到asmtools這樣一個工具,用以修改class文件。
一.獲取工具
獲取工具方法:
自己構(gòu)建asmtools.jar:https://www.cnblogs.com/yelongsan/p/9674723.html
直接下載asmtools.jar:https://yun.515code.com/file/asmtools.jar
另外,下載 JD-GUI ,它是".class"文件的反編譯工具。
拿到j(luò)ar包后,我們進入命令行即可。
二.測試
1.生成一個java文件,名字為 Foo.java

2.編譯并執(zhí)行

3.將class文件轉(zhuǎn)換為jasm文件

我們都知道,boolean類型為true時在虛擬機用1代替(boolValue在虛擬機中值為1)
接下來,將第一個 iconst_1 改為 iconst_2( 相當于把boolValue值改為2 )
4.將jasm文件轉(zhuǎn)換為class文件
java -jar asmtools.jar jasm Foo.jasm
5.使用 JD-GUI 打開 Foo.class(內(nèi)容如下)

再次執(zhí)行:

三.總結(jié)
1. 學會使用asmtools工具修改class文件:
由 class 文件生成 jasm 文件:
java -jar asmtools.jar jdis Foo.class > Foo.jasm
由 jasm 文件生成 class 文件:
java -jar asmtools.jar jasm Foo.jasm

文章作者: 扎克蕉
文章鏈接: https://www.515code.com/posts/g3f7b5h7/
版權(quán)聲明: 本博客所有文章除特別聲明外,均采用 CC BY-NC-SA 4.0 許可協(xié)議。轉(zhuǎn)載請注明來自 515code-實驗室。