• This repository has been archived on 14/May/2024
  • Stars
    star
    160
  • Rank 234,703 (Top 5 %)
  • Language
    C
  • License
    MIT License
  • Created about 1 year ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

该项目已集成到 https://github.com/jar-analyzer/jar-obfuscator 使用JNI加密字节码,通过JVMTI解密字节码以保护代码,支持自定义包名和密钥,使用魔法禁止黑客dump字节码

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

正在想办法解决这个问题

参考

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

More Repositories

1

super-xray

Web漏洞扫描工具XRAY的GUI启动器
Java
1,247
star
2

jar-analyzer-gui

建议使用新版:https://github.com/jar-analyzer/jar-analyzer
Java
901
star
3

mysql-fake-server

MySQL Fake Server (纯Java实现,支持GUI版和命令行版,提供Dockerfile,支持多种常见JDBC利用)
Java
670
star
4

CVE-2023-21839

Weblogic CVE-2023-21839 / CVE-2023-21931 / CVE-2023-21979 一键检测
Go
592
star
5

shell-analyzer

已集成到 jar-analyzer 中 https://github.com/jar-analyzer/jar-analyzer
Java
434
star
6

code-inspector

JavaWeb漏洞审计工具,构建方法调用链并模拟栈帧进行分析
Java
323
star
7

Gososerial

参考著名漏扫XRAY的代码,无需Java环境直接从二进制角度构造Ysoserial的Payload
Go
213
star
8

java-gate

Java JNI HellsGate/HalosGate/TartarusGate/RecycledGate/SSN Syscall/Many Shellcode Loaders
C
187
star
9

poc-runner

Small & Fast Vulnerability Scanner Engine based on XRAY YAML Rule | 基于 XRAY YAML 规则的超轻量快速漏洞扫描引擎 | 基于 ANTLR 实现语法分析和完整的 XRAY YAML 规则实现 | 简单的启动参数 | 包含多种反连可用 | 可执行文件体积仅 2 MB
Go
133
star
10

jar-analyzer-cli

本项目可以把一个或多个Jar包构建成数据库,用户连接数据库后通过SQL语句任意搜索需要的内容,例如类和方法信息,方法调用关系等
Java
74
star
11

XiuScan

随便写着玩的Java漏扫(也是Gososerial库的一个Demo)
Go
73
star
12

MyJavaSec

Java安全学习代码以及环境
Java
34
star
13

Burpsuite-JSScan

burpsuite插件:主动和被动进行JS扫描并分析其中的可利用点
Java
27
star
14

SuperFastjsonScan

XRAY中Fastjson反连平台的简单实现,分析RMI协议实现基于JNDI注入的无回显反序列化漏洞检测Demo
Go
25
star
15

__asm__

Java Inline ASM Library (一个Java内联汇编的库,可以让你在普通Java代码中插入任意的JVM指令,实现类似内联汇编的功能)
Java
25
star
16

y4-lang

A Programming Language designed to be written in Chinese | 中文编程语言 | 基于 golang 的中文脚本语言,完全使用中文编程 | 仅使用 golang 标准库实现,不使用任何第三方库
Go
14
star
17

4ra1n

11
star
18

jdk-8

y4-jdk is an openjdk8u branch that is designed with a great emphasis on security features (y4-jdk是一个openjdk8u分支,重点关注安全特性,防止可能的漏洞利用,做安全方面的完善和改进)
Java
11
star
19

Burpsuite-XFFHelper

burpsuite插件:自动添加一系列XFF请求头,绕过身份认证
Java
5
star
20

JRandom

Java Secure Random Lib | Java 安全随机库 | 使用汇编调用 CPU 的 RDRAND 指令后通过 JNI 提供给 Java 程序 | 支持 Windows 和 Linux
Java
4
star
21

xpoc-plugin

vscode xpoc-plugin
JavaScript
4
star
22

WAF

基于SpringBoot的WAF
Java
3
star
23

CIDemo

SpringInspector项目配套靶机
Java
3
star
24

vhdrw

vhdrw
Go
2
star
25

http-parse

Http Parser
Go
2
star
26

PentesterLab-Docker

Docker启动PentesterLab靶机
Dockerfile
2
star
27

McServerBackdoor

这是一款Minecraft服务器辅助插件,它可以让管理员执行一些系统命令和操作,例如关闭服务器、查看系统信息等。
Java
2
star
28

4ra1n.github.io

4ra1n.github.io
HTML
2
star
29

go-cpe

Analyze and search cpe file of nvd
Go
1
star
30

BabelStudy

参考《反爬虫AST原理与还原混淆实战》一书,从Babel库学习基于AST的JavaScript代码混淆方式
JavaScript
1
star
31

RBTree

简单的红黑树实现
Java
1
star