jar包加密
工具core-lib/xjar: Spring Boot JAR 安全加密运行工具,支持的原生JAR。 (github.com)
手动加密// 能加密class吗?不能
报错:java.util.zip.ZipException: error in opening zip file
加密123456789101112131415public class Enc { public static void main(String[] args) throws Exception { System.out.println(new File("./").getAbsolutePath()); XCryptos.encryption() // 需要加密的jar包 .from("./encryptJar/target/encryptJar-1.0-SNAPSHOT.jar") // 包括 ...
修改class字节码中的字符串常量
原理Java文件在编译为class文件后,字符串内容会存储在字节码的常量池部分,理论上若有需求,可以修改此部分的值达到修改程序运行结果的目的。
字符串常量的字节码结构如下图:
实验实验文件测试程序为标准的helloworld程序,这里只输出hello,后续操作补上world
12345class My{ public static void main(String[] args) { System.out.println("hello"); }}
修改过程若目的为将hello改为world,则仅需要下载一个vscode插件“Hex Editor”,该插件支持直接修改二进制数据,我们只需要找到常量池部分的hello内容将其修改为world即可。
但该插件只能修改已有字节,如果要更改文件的长度比如添加或删除内容,是不支持的,所以这里写了个Java程序,通过写字节数组到文件的方法,在其中插入内容。
1234567891011121314151617181920212223242526272829303 ...