
现代运行时反混淆
在运行时,将日志和崩溃报告堆栈追踪中的 SRG 方法和字段标记重写为可读的 Mojang 名称。
当 Forge 1.20.1 崩溃时,日志显示的方法名是 m_109093_ 而非 render。本模组可实时重写这些符号。替换操作会在游戏内控制台、latest.log 以及崩溃报告 .txt 文件中生效,让您能真正读懂是什么导致了崩溃。
效果展示
改写前:
java.lang.NullPointerException
at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:869)
at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1184)
改写后:
java.lang.NullPointerException
at net.minecraft.client.renderer.GameRenderer.render(GameRenderer.java:869)
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1184)
特性
- 实时反混淆,便于调试。
- 同时适用于客户端和专用服务器。
- 使用 Mojang 官方 1.20.1 映射表。
- 映射表仅在首次启动时下载一次,之后会本地缓存(约占用 5 MB 磁盘空间)。
- 覆盖堆栈跟踪、崩溃报告以及 Java 的智能 NPE 消息。
- 无需配置。只需将 jar 文件放入
mods/文件夹。
安装
- 下载 jar 文件并放入
mods/文件夹。 - 启动游戏。首次运行时,模组会下载 Mojang 的映射表(需几秒钟)。之后将直接从缓存读取。
兼容性
- Minecraft: 1.20.1
- 加载器: Forge 47+
- 运行端: 客户端 + 服务器(两端均可运行,且均有用)
可选配置
首次启动时会自动生成 config/moderndeobf-common.toml,其中包含以下开关:
enabled:总开关remapCrashReports:是否重写.txt崩溃转储文件downloadMappingsIfMissing:设为false可用于离线环境(需自行预填充缓存)
已知限制
- 极早期的崩溃。 一些在模组构造函数运行前触发的 Mixin 警告会保留原始 SRG 符号。这与 Fabric 上的 StackDeobfuscator 限制相同。
- 自定义日志行。 模组通过自身的
LOGGER.info()调用手动格式化 SRG 名称的情况不会被捕获。本模组仅处理堆栈跟踪和 Java 的 NPE 消息。 - 参数名称。 Mojang 的映射表不包含参数名,因此本模组也不会生成。
关于映射表
jar 文件中不包含任何 Mojang 映射数据。首次启动时,模组会直接从 Mojang 的 CDN(URL 列于 version_manifest_v2.json 中)下载映射表,并在 <gameDir>/moderndeobf/cache/ 目录下构建本地查找表。
致谢
- StackDeobfuscator(作者:booky10)。这是 Fabric 上类似功能的模组,也是本模组的设计模板。
- Not Enough Crashes 和 Crashy。本模组作为事后分析工具的补充。
- SrgUtils。本模组使用的映射表加载、反向映射及链式处理的基础库。
免责声明
本模组为个人使用而编写。开发过程中大量使用了 Claude。 除此之外,不包含任何 AI 生成的资源。
GitHub 上的发布版本同时包含经可验证哈希验证的 virustotal 扫描结果。
源码 / 许可证
MIT 许可证。源码托管于 GitHub。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。