JarEncrypt2加密工具

JarEncrypt2是一个jar包加密工具,类加载器基于jvmti实现,可以有效防止java代码被反编译,支持CentOS、Ubuntu等Linux环境,和MacOSX环境。

JarEncrypt2

  • 下载
  • 检测环境变量
  • 修改加密范围
  • 修改密码
  • 编译
  • 加密
  • 解密

下载

JarEncrypt2.zip

检测环境变量

打印环境变量JAVA_HOME

echo ${JAVA_HOME}

OSX:

/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home

Linux:

/usr/local/jdk

如果配置Java环境时没有定义该变量,则输出为空,需要编辑decrypt/Makefileencrypt/Makefile,替换$(shell echo ${JAVA_HOME}),或者定义一个零时变量:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home

变量值根据Java安装路径进行修改。

修改加密范围

编辑Encrypt.java

vim Encrypt.java

80行代码:

if (name.endsWith(".class") && name.startsWith("com/***/foo/abr")) {

替换com/***/foo/abr为需要加密的包名。

编辑decrypt/decrypt.cpp

vim decrypt/decrypt.cpp

26行代码:

if (name && strncmp(name, "com/***/foo/adr", 12) == 0)

替换com/***/foo/abr为需要加密的包名。

修改密码

编辑decrypt/decrypt.cpp

vim decrypt/decrypt.cpp

30行代码:

my_data[i] = class_data[i] ^ 0x01e02c562;

替换0x01e02c562

编辑encrypt/encrypt.cpp

vim encrypt/encrypt.cpp

16行代码:

dst[i] = dst[i] ^ 0x01e02c562;

替换0x01e02c562两处数值必须一致

编译

javac Encrypt.java
cd encrypt && make && cd -
cd decrypt && make && cd -

加密

java -Djava.library.path=./encrypt/ Encrypt -src demo.jar -dst demo_encrypt.jar
  • java.library.path

指定libencrypt.solibencrypt.dylib所在的路径

  • src

需要加密的jar文件的路径

  • dst

指定加密后的jar文件路径,缺省则以_encrypt.jar保存在原jar文件路径

解密

检测当前环境是否存在LD_LIBRARY_PATH变量

echo ${LD_LIBRARY_PATH}

追加JarEncrypt2/decrypt

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/data/JarEncrypt2/decrypt

或者替换

export LD_LIBRARY_PATH=/data/JarEncrypt2/decrypt
  • Linux
java -agentlib:linux -jar demo_encrypt.jar
  • OSX
java -agentlib:darwin -jar demo_encrypt.jar

你可能感兴趣的:(工具)