zoukankan      html  css  js  c++  java
  • 利用jclasslib修改java编译后的.class文件

    java编译后的.class文件,当然是可以反编译的,但主要是反编译后的java文件不能100%的完全正确,也不能保证能编译回去,所以直接修改.class文件比较靠谱。

    1.可以用jd-gui反编译,找到method

    2.用java bytecode (jclasslib) 查找要修改的变量地址

    3.使用一下代码修改:

    package com.zhahost;
    
    import java.io.*;
    
    import org.gjt.jclasslib.io.ClassFileWriter;
    import org.gjt.jclasslib.structures.CPInfo;
    import org.gjt.jclasslib.structures.ClassFile;
    import org.gjt.jclasslib.structures.constants.ConstantDoubleInfo;
    
    public class ModifyByteCode {
        public void Run() {
            try {
                String filePath = "C:\\ExcelExporter.class";
                FileInputStream fis = new FileInputStream(filePath);
    
                DataInput di = new DataInputStream(fis);
                ClassFile cf = new ClassFile();
                cf.read(di);
                CPInfo[] infos = cf.getConstantPool();
    
                int pos = 148;
                if (infos[pos] != null) {
                    ConstantDoubleInfo uInfo = (ConstantDoubleInfo) infos[pos];
                    uInfo.setDouble(1.0);
                    infos[pos] = uInfo;
                }
    
                cf.setConstantPool(infos);
    
                fis.close();
                File f = new File(filePath);
                ClassFileWriter.writeToFile(f, cf);
    
            } catch (Exception e) {
    
            }
        }
    }

    留着备用,一般人看不懂...

  • 相关阅读:
    bzoj 4012: [HNOI2015]开店
    POJ 1054 The Troublesome Frog
    POJ 3171 Cleaning Shifts
    POJ 3411 Paid Roads
    POJ 3045 Cow Acrobats
    POJ 1742 Coins
    POJ 3181 Dollar Dayz
    POJ 3040 Allowance
    POJ 3666 Making the Grade
    洛谷 P3657 [USACO17FEB]Why Did the Cow Cross the Road II P
  • 原文地址:https://www.cnblogs.com/zhahost/p/2644207.html
Copyright © 2011-2022 走看看