diff --git a/README.md b/README.md index a985607..01e1a49 100644 --- a/README.md +++ b/README.md @@ -34,9 +34,9 @@ ## 后门 原版的Zen存在大量后门,例如上报QQ、屏幕截图、扫描文件、上传文件、远程执行命令等。因此我们不推荐任何用户继续使用原版Zen,除非你愿意现在把你身上的衣服脱掉然后去本地人最多的广场裸舞,然后把自己裸舞的视频发送到Zen的群内。 -> Zen开发者称,所有的后门都未实现未引用,是由夏天完成的。但笔者在分析其Native时发现了完整引用,暂且蒙古。 +由于精神马来西亚人从小父母双亡,无父无母的精神马来西亚人自幼脑回路不正常。 +![Snapshot](./img/meme.jpg) -经过分析,当你登录Zen后就会自动触发屏幕截图。同时已有用户反馈,当你狗叫Zen开发者后,其开发者将会把你的电脑屏幕截图发送至QQ群内,所以请你不要狗叫Zen开发者。 [详细分析](./mapping/BACKDOOR.md) @@ -50,17 +50,26 @@ ## 构建 -OpenZen 支持两种交付形式:**Forge Mod (jar)** 和 **热注入器 (单文件 EXE,内嵌 DLL)**。Mod 路径只要 JDK,注入器路径还需要 MSVC 工具链。 +OpenZen 支持两种交付形式:**Java Agent jar**(挂到 Minecraft JVM 启动参数里)和 **热注入器 (单文件 EXE,内嵌 DLL)**。Agent 路径只要 JDK,注入器路径还需要 MSVC 工具链。 + +> **本项目不能作为 Forge mod 启动。** `mods/` 加载路径不被支持,不要把 jar 丢进 `.minecraft/mods/`。 ### 共同前置 - **JDK 17**(推荐 Microsoft Build of OpenJDK / Temurin / Azul Zulu 任一)。 - 必须设置 `JAVA_HOME` 环境变量指向该 JDK 安装目录(PowerShell 验证:`echo $env:JAVA_HOME`)。 - 仓库根目录用 `gradlew.bat` 即可,**不需要**单独安装 Gradle。 +- **可选:UPX** —— 仅热注入器路径会用到,作用是把最终的 `OpenZenLoader.exe` 从 ~32 MB 压到 ~10 MB。在 `PATH` 上检测到 `upx` 时 `./gradlew upxCompress` 会自动跑 `--best --lzma`;找不到就只打一条 warning 直接跳过,不影响功能。安装方式: + + ```powershell + choco install upx -y + ``` + + 或者从 下载 ZIP 并把 `upx.exe` 加进 `PATH`。 首次执行会从 ForgeMaven 下载 1.20.1 + Forge 47.4.20 的 mappings 和依赖,耗时几分钟到十几分钟,取决于网络。 -### 1. 构建为 Forge Mod (jar) +### 1. 构建为 Java Agent jar 零额外依赖。 @@ -68,7 +77,13 @@ OpenZen 支持两种交付形式:**Forge Mod (jar)** 和 **热注入器 (单 .\gradlew.bat jar ``` -产物:`build/libs/hey-1.0-SNAPSHOT.jar`。把它丢进 `.minecraft/mods/`,按正常 Forge mod 启动即可。Mod ID 是 `hey`,Mod 列表里不会显示(`MinecraftPatch.onTick` 启动时会把自己从 `ModList` 摘掉)。 +产物:`build/libs/hey-1.0.jar`。在 Forge 启动器的 JVM 启动参数里加上: + +``` +-javaagent:"完整\路径\到\hey-1.0.jar" -Djdk.attach.allowAttachSelf=true +``` + +`PatchAgent.premain` 会在 Minecraft 类加载之前装载所有 ASM 补丁;`-Djdk.attach.allowAttachSelf=true` 是让 `installPatchesAndRetransform` 在需要时能兜底走 Attach API。 ### 2. 构建为热注入器 (单文件 EXE) @@ -100,22 +115,14 @@ OpenZen 支持两种交付形式:**Forge Mod (jar)** 和 **热注入器 (单 .\gradlew.bat dll ``` -产物:`build/dist/OpenZenLoader.exe`(OpenZen.dll 已内嵌为 RCDATA 资源段)。 - -构建流程: -1. `jar` → 编译 Java 源码,执行 `reobfJar` 把字节码 mojmap→SRG -2. `stageNativeJar` → 拷 jar 到 `native/zen.jar`,等待 DLL 把它作为资源段嵌入 -3. `configureNative` → CMake configure (`-A x64`) -4. `buildNative` → 先 build `OpenZen.dll`,CMake 自定义命令把 DLL 拷到 loader 的 binary dir,rc.exe 再嵌入到 `OpenZenLoader.exe` -5. `packageDist` → 把 EXE 拷到 `build/dist/` +产物:`build/dist/OpenZenLoader.exe`。如果已装 UPX 想顺便压缩,跑 `.\gradlew.bat upxCompress`。 #### 使用注入器 1. 用 HMCL / Forge 启动器正常启动 Minecraft 1.20.1 Forge(**不需要**任何特殊 JVM 参数)。 -2. 双击 `OpenZenLoader.exe`(会弹一次 UAC 提权)。 -3. GUI 自动列出系统里**所有 Minecraft 实例**(按窗口标题 startsWith `Minecraft` 且不含 `Launcher` 过滤),每秒自动刷新一次。 -4. **双击对应的行**就开始注入。 -5. 状态栏出现 `Injected into PID ...` 即成功;Minecraft 内右 Shift 触发 ClickGUI 验证。 +2. 双击 `OpenZenLoader.exe`。 +3. GUI 自动列出系统里**所有 Minecraft 实例**,每秒自动刷新一次。 +4. 点击行最后的 Inject 按钮。 诊断日志: - Native 端:`%TEMP%\openzen.log` @@ -124,8 +131,9 @@ OpenZen 支持两种交付形式:**Forge Mod (jar)** 和 **热注入器 (单 ## 常见问题 ### 布吉岛反作弊绕过 -截止至目前(2026/05/23),布吉岛并未检测本项目,考虑其反作弊为黑名单类名机制。 -建议构建时修改类名。 +~~截止至目前(2026/05/23),布吉岛并未检测本项目,考虑其反作弊为黑名单类名机制。~~ +~~建议构建时修改类名。~~ +类名已黑名单,请在构建时修改类名。 ## 致谢