如何修改Java字節碼


AsmTools

AsmTools是openJdk中的一個項目,可以用來輔助我們修改字節碼信息

官方文檔: https://wiki.openjdk.java.net/display/CodeTools/How+to+build+AsmTools

測試類

package com.jvm.byteCode;

public class Test3 {
    public static void main(String[] args) {
        boolean flag = true;
        if (flag) System.out.println("ifeq:ifeq succeeds if and only if value = 0 ");
        if (flag == true) System.out.println("if_icmpne:if_icmpne succeeds if and only if value1 ≠ value2");
    }
}

通過jclasslib可以看到

 

 代碼執行結果

ifeq:ifeq succeeds if and only if value = 0
if_icmpne:if_icmpne succeeds if and only if value1 ≠ value2

JASM結果

通過下面命令可生成jasm結果

java -cp asmtools.jar  org.openjdk.asmtools.jdis.Main Test3.class > Test3.jasm.1

 

 jasm生成class

修改jasm文件

 

 通過命令

java -cp asmtools.jar  org.openjdk.asmtools.jasm.Main  Test3.jasm.1

生成對應的class文件

 

 運行代碼結果:

 

 字節碼修改成功了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM