{"id":13575669,"url":"https://github.com/jar-analyzer/jar-obfuscator","last_synced_at":"2026-02-03T19:17:12.453Z","repository":{"id":239641319,"uuid":"798123820","full_name":"jar-analyzer/jar-obfuscator","owner":"jar-analyzer","description":"Jar Obfuscator V2 - 一个 JAR 文件保护混淆工具，支持包名/类名/方法名/字段名/参数名引用分析和重命名混淆方式，支持字符串加密/整型异或混淆/垃圾代码花指令混淆/等方式，支持方法和字段的隐藏，支持 SpringBoot 和 war 包，配置简单，文档教程齐全，容易上手","archived":false,"fork":false,"pushed_at":"2025-06-20T12:51:19.000Z","size":29774,"stargazers_count":380,"open_issues_count":3,"forks_count":44,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-20T13:32:18.555Z","etag":null,"topics":["bytecode-obfuscator","code-obfuscator","java-asm","java-obfuscation","java-obfuscator","obfuscation","obfuscator"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jar-analyzer.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.MD","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-05-09T06:23:09.000Z","updated_at":"2025-06-20T12:51:22.000Z","dependencies_parsed_at":"2025-06-20T13:36:27.890Z","dependency_job_id":null,"html_url":"https://github.com/jar-analyzer/jar-obfuscator","commit_stats":null,"previous_names":["jar-analyzer/jar-obfuscator"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/jar-analyzer/jar-obfuscator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jar-analyzer%2Fjar-obfuscator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jar-analyzer%2Fjar-obfuscator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jar-analyzer%2Fjar-obfuscator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jar-analyzer%2Fjar-obfuscator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jar-analyzer","download_url":"https://codeload.github.com/jar-analyzer/jar-obfuscator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jar-analyzer%2Fjar-obfuscator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29054223,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T15:43:47.601Z","status":"ssl_error","status_checked_at":"2026-02-03T15:43:46.709Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bytecode-obfuscator","code-obfuscator","java-asm","java-obfuscation","java-obfuscator","obfuscation","obfuscator"],"created_at":"2024-08-01T15:01:03.165Z","updated_at":"2026-02-03T19:17:09.344Z","avatar_url":"https://github.com/jar-analyzer.png","language":"Java","readme":"# Jar-Obfuscator V2\n\n# 作者精力有限，暂不维护了\n# 作者主要精力将放在 jar-analzyer 和 class-obf 工具的维护\n\n\u003cimg alt=\"gitleaks badge\" src=\"https://img.shields.io/badge/protected%20by-gitleaks-blue\"\u003e\n\n![](https://github.com/jar-analyzer/jar-obfuscator/workflows/maven%20check/badge.svg)\n![](https://github.com/jar-analyzer/jar-obfuscator/workflows/leak%20check/badge.svg)\n![](https://img.shields.io/badge/build-Java%208-orange)\n![](https://img.shields.io/github/downloads/jar-analyzer/jar-obfuscator/total)\n![](https://img.shields.io/github/v/release/jar-analyzer/jar-obfuscator)\n\n[CHANGE LOG](CHANGELOG.MD)\n\n`Jar Obfuscator V2` 是一个 `JAR` 文件混淆工具\n\n- 命令行模式，简单易用\n- 仅单个 `JAR` 文件小于 `1 MB` 超轻量\n- 简洁的配置文件快速上手\n- 输入 `JAR` 直接输出混淆后的 `JAR`\n\n注意：目前是 `v2` 版本，如果你需要 `v1` 版本可以从 `release` 页面下载\n\n## 开始\n\n[前往下载](https://github.com/jar-analyzer/jar-obfuscator/releases/latest)\n\n简单命令即可启动（第一次启动将自动生成配置文件）\n\n```shell\njava -jar jar-obfuscator.jar --jar test.jar --config config.yaml\n```\n\njar-obfuscator 功能点\n\n- 类名混淆（包含引用修改）     \n- 包名混淆（包含引用修改）      \n- 方法名混淆（包含引用修改）      \n- 字段名混淆（包含引用修改）     \n- 方法参数名混淆（包含引用修改）   \n- 删除编译调试信息           \n- 字符串 AES 加密运行时解密   \n- 字符串修改为访问全局列表方式   \n- 整型常数多重异或混淆        \n- 添加垃圾代码（可指定多级别）   \n- IDEA 反编译时隐藏方法     \n- IDEA 反编译时隐藏字段     \n- 初步支持 SpringBoot 混淆\n- 初步支持 Web WAR 混淆   \n\n## 配置\n\n```yaml\n# jar obfuscator v2 配置文件\n# jar obfuscator v2 by jar-analyzer team (4ra1n)\n# https://github.com/jar-analyzer/jar-obfuscator\n\n# 日志级别\n# debug info warn error\n# 开启 debug 会打印更多的混淆细节\nlogLevel: info\n\n# 内部参数\n# 是否启动 JAVA ASM 的 COMPUTE FRAMES/MAX 自动计算\n# 如果遇到 TYPE * NOT PRESENT 报错可以尝试设置该选项为 FALSE\nasmAutoCompute: true\n\n# 如果你是 springboot 请开启\nuseSpringBoot: false\n# 如果你是 war web 项目请开启\nuseWebWar: false\n\n# 混淆字符配置\n# 类名方法名等信息会根据字符进行随机排列组合\nobfuscateChars:\n  - \"i\"\n  - \"l\"\n  - \"L\"\n  - \"1\"\n  - \"I\"\n# 不对某些类做混淆（不混淆其中的所有内容）\n# 通常情况必须加入 main 入口\nclassBlackList:\n  - \"com.test.Main\"\n# 不对指定正则的类进行混淆\n# 注意这里的类名匹配是 java/lang/String 而不是 java.lang.String\n# 该配置和 classBlackList 同时生效\nclassBlackRegexList:\n  - \"java/.*\"\n  - \"com/intellij/.*\"\n# 不对某些 method 名做混淆 正则\n# visit.* 忽略 JAVA ASM 的 visitCode visitMethod 等方法\n# start.* 忽略 JAVAFX 因为启动基于 start 方法\n# 以此类推某些方法和类是不能混淆的（类继承和接口实现等）\nmethodBlackList:\n  - \"visit.*\"\n  - \"start.*\"\n\n# 开启类名混淆\nenableClassName: true\n# 开启包名混淆\nenablePackageName: true\n# 开启方法名混淆\nenableMethodName: true\n# 开启字段混淆\nenableFieldName: true\n# 开启参数名混淆\nenableParamName: true\n# 开启数字异或混淆\nenableXOR: true\n\n# 开启加密字符串\nenableEncryptString: true\n# 加密使用 AES KEY\n# 注意长度必须是 16 且不包含中文\nstringAesKey: Y4SuperSecretKey\n# 开启进阶字符串混淆\nenableAdvanceString: true\n# 进阶字符串处理参数\nadvanceStringName: GIiIiLA\n# 字符串解密类名\ndecryptClassName: org.apache.commons.collections.list.AbstractHashMap\n# 字符串解密方法名\ndecryptMethodName: newMap\n# 字符串 AES KEY 名字\ndecryptKeyName: LiLiLLLiiiLLiiLLi\n\n# 是否隐藏方法\nenableHideMethod: true\n# 是否隐藏字段\nenableHideField: true\n\n# 开启删除编译信息选项\nenableDeleteCompileInfo: true\n\n# 开启花指令混淆\nenableJunk: true\n# 花指令级别\n# 最低1 最高5\n# 使用 3 以上会生成垃圾方法\njunkLevel: 5\n# 一个类中的花指令数量上限\nmaxJunkOneClass: 2000\n\n# 是否打印所有主函数\nshowAllMainMethods: true\n\n# 是否保留临时类文件\nkeepTempFile: false\n```\n\n## 配置指南\n\n大概思路如下：\n\n- 通常情况必须把 `main` 入口加入 `classBlackList`\n- 通常需要配置 `classBlackRegexList` 拉黑所有的第三方库类（如 `org/apache/.*` 等）\n- 如果某些类集成或者实现某些库的接口，重写方法不允许重命名，注意配置 `methodBlackList`\n- 建议测试配置时不要开启 `enableJunk` 和 `enableHide*` 方法，一切没问题再开启这些 \n\n## 更新内容\n\n2.0.0-RC2 版本已初步支持 `SpringBoot` 混淆\n\n![](img/001.png)","funding_links":[],"categories":["Java","开发工具\u0026框架"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjar-analyzer%2Fjar-obfuscator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjar-analyzer%2Fjar-obfuscator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjar-analyzer%2Fjar-obfuscator/lists"}