Giter VIP home page Giter VIP logo

code-encryptor's Introduction

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

正在想办法解决这个问题

参考

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

code-encryptor's People

Contributors

4ra1n avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.