Skip to content
This repository has been archived by the owner on Aug 22, 2024. It is now read-only.

Latest commit

 

History

History
45 lines (24 loc) · 1.28 KB

README-advance.md

File metadata and controls

45 lines (24 loc) · 1.28 KB

进阶

开启 JVMTI 加密的混淆效果

(该类是非法字节码无法直接运行也无法反编译)

如果开启该选项,比如启动时指定特殊本地库进行解密

使用 JNI 加密字节码,通过 JVMTI 解密字节码以保护代码

提供两份 DLL/SO 文件,一份加密一份解密,实际运行只需使用解密 DLL/SO 文件,支持自定义密钥和包名

java -XX:+DisableAttachMechanism -agentpath:decrypter.dll=PACKAGE_NAME=com.your.pack,KEY=your-key -jar your-jar.jar

注意:加密后的 JAR 第一次可能无法运行,第二次可以正常运行

加密后的 CLASS 文件变成无法解析的畸形文件

jd-gui

除了开头保持了 MAGIC 部分,后续是无法解析的字节

hex

使用指定参数启动即可禁止 Java Agent 动态 dump 字节码

对于更资深的黑客,他们会想到 sa-jdiHSDBdump 字节码

我参考 Beichen 师傅议题的思路,从 JVM 里禁用了 gHotSpotVMStructs 函数

支持 Windows 系统

WINDOWS

支持 Linux 系统

LINUX

注意:可能不适用于启动扫描 class 的项目(典型的项目比如 SpringBoot 等)