# class-obf
**Repository Path**: weyee/class-obf
## Basic Information
- **Project Name**: class-obf
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-01-21
- **Last Updated**: 2025-01-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# class-obf
[CHANGE LOG](CHANGELOG.MD)





`class-obf` 项目全称 `Class Obfuscator` 项目,专门用来混淆单个 `Class` 文件
示例图:混淆前 -> 混淆后

可以自定义中文混淆字符,以及方法隐藏等技巧

从 `1.2.0` 版本开始支持集中提取字符串后 `AES` 加密运行时解密

本项目已深度集成到 `web-chains` 项目中 (https://github.com/Java-Chains/web-chains)

## 背景
`jar-analyzer` 系列曾有一款工具 `jar-obfuscator` 实现 `jar` 包的混淆
链接:https://github.com/jar-analyzer/jar-obfuscator
但是该工具有以下问题:
- 配置文件非常复杂,不熟悉的情况下难以上手使用
- 不同的 `Jar` 文件需要考虑各种不同的情况否则无法启动
- 实际需求更大的是对单个 `Class` 文件的混淆(内存马等需求)
**于是有了这款工具**
- 配置大幅简化,仅针对单个 `Class` 文件
- 命令行输出改善,详细展示混淆细节
- 你可以只混淆你项目的核心类替换即可(方便快速)
- 提供了多种方式的 `API` 调用
## 快速开始
生成配置文件:`java -jar class-obf.jar --generate`
使用指定配置文件混淆当前目录的 `Test.class`
```shell
java -jar class-obf.jar --config config.yaml --input Test.class
```
一个普通的类
```java
public class Test {
private String a = "cal";
private String b = "c.exe";
private int c = 1;
public static void eval() throws Exception {
Test test = new Test();
Runtime rt = Runtime.getRuntime();
rt.exec(test.a + test.b);
System.out.println(test.c);
}
public static void main(String[] args) throws Exception {
eval();
}
}
```
你可以随意搭配配置文件,得到以下几种混淆结果
效果一(默认配置)

效果二(使用最高级别的花指令参数)

自定义混淆字符(例如使用中文)

开启隐藏方法和字段功能(反编译看不到方法)

但是!可以成功执行

使用 `--std-output` 参数将会导出标准的 `class` 文件以及对应的包名
例如 `me.n1ar4.Test` 将会导出 `class-obf-output/me/n1ar4/Test.class` 文件
## API
你可以使用代码方式调用(参考 `test` 目录的 `TestQuick/TestAPI` 文件)
可以使用 `jitpack` 或者自行下载后添加到 `classpath`
```xml
This project is developed using JetBrains IDEA.
Thanks to JetBrains for providing me with a free license, which is a strong support for me.
## Star