Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
This repository was archived by the owner on Dec 4, 2024. It is now read-only.
/ code-encryptor Public archive

使用JNI加密字节码,通过JVMTI解密字节码以保护代码,支持自定义包名和密钥,使用魔法禁止黑客dump字节码

License

Notifications You must be signed in to change notification settings

4ra1n/code-encryptor

Repository files navigation

code-encryptor

English Doc

介绍

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

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

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

jd-gui

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

hex

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

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

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

支持 Windows 系统

WINDOWS

支持 Linux 系统

LINUX

快速开始

加密解密部分使用C做一层加密,使用汇编做位运算二层加密,已提供编译好的Release版本DLL/SO文件嵌入Jar包中

内置支持是JDK-8,其他版本未测试,理论上需要更换JNI.h头文件重新编译,已支持WindowsLinux

加密你的Jar包:(指定Jar包和package加密包名以及密钥key

 java -jar code-encryptor.jar patch --jar your-jar.jar --package com.your.pack --key your-key

导出解密DLL/SO文件:(默认导出到code-encryptor-temp目录不建议修改)

java -jar code-encryptor.jar export

使用解密DLL/SO启动Jar包:(使用-agentpath参数)

注意必须有两个参数PACKAGE_NAMEKEY

注意:某些情况下可能第一次无法启动,重复使用命令启动即可

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

特点

本项目相比于网上公开的文章/代码,优势和特点有以下几条:

  • 原文章固定了包名,用户想加密自己的包名需要重新编译DLL
  • 原文章加密和解密DLL是同一个,这样只用JNI调用下加密即可破解
  • 原文章的代码仅是Demo级别,无法直接上手测试和使用
  • 原文章没有加入具体的加密算法,仅是简单的运算,需要加强
  • 原文章的代码存在一些BUG和优化空间
  • 使用某些魔法操作,使字节码无法被 dump 进一步保证安全

目前的加密解密算法:

  • 多次位运算,交换字节等
  • 基于XXTEA算法,多轮加密
  • 支持自定义密钥,进一步保护

构建

编译环境:

  • Windows 11 / Ubuntu 22.04
  • JDK 8 / Maven
  • MSVC + ml64 (Windows) / gcc + nasm (Linux)
  • CMake 3.x
  • Python 3.x

其他

不适用于启动扫描 class 的项目(典型的项目比如SpringBoot

正在想办法解决这个问题

参考

感谢以下项目或文章提供的思路:

About

使用JNI加密字节码,通过JVMTI解密字节码以保护代码,支持自定义包名和密钥,使用魔法禁止黑客dump字节码

Topics

Resources

License

Stars

Watchers

Forks

Morty Proxy This is a proxified and sanitized view of the page, visit original site.