Minecraft任意版本Forge模组反混淆教程

前言

Minecraft的很多mod并不开源,如果想给这些mod做附属的话是个很困难的事,这篇文章提供使用官方srg的方法进行混淆映射,从而获取原代码

1.12.2以下的版本

使用BON2

BON2是广为人知的一款反混淆工具,通过它可以简单快速的获取高质量源码。

首先需要下载BON2和ForgeMDK。

BON2_Github

ForgeMDK
在这里插入图片描述

下载后的BON2可以直接双击打开

在ForgeMDK页面选择需要的Minecraft版本,之后选择一个Forge版本(推荐使用最新的),然后下载MDK

下载之后找个地方解压,然后用CMD进入到文件夹中,首先需要把./gradle/wrapper/gradle-wrapper.properties中的gradle版本改一下,再运行gradlew setupDecompWorkspace,如果提示找不到该命令,则先使用gradlew tasks获取所有命令,其中或包括forge的配置命令,下图的前三个根据自己的IDE选择即可,输入之后等待构建完成
在这里插入图片描述

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
#下面的就是gradle版本,将7.5.1(1.7.10版本应该是2.0),修改为需要的版本,1.7.10至少改成4.4.1
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

等待构建完成即可,这个过程比较吃网络,失败了多试几次或者开魔法

在这里插入图片描述

成功之后就是这个样子

之后打开BON2
在这里插入图片描述

构建之后就可以选择被反混淆MOD的Forge版本,之后在input jar中选择,点击GO
在这里插入图片描述

这样就算混淆成功了,使用JD-GUI或者其他反编译工具可以直接获取可读代码,或者直接使用deobf文件开发附属

BUG

使用BON2的过程中小概率会报错,点击OK可以直接跳过,如果需要读取一些报错文件中的方法,可以直接用代码编辑器,如VSCode打开,之后在用户目录下找到\.gradle\caches\minecraft\net\minecraftforge\forge\Minecraft版本-Forge版本-Minecraft版本\srgs,里面的就是混淆表,找到文件名为srg-mcp.srg的文件,用代码编辑器打开
在这里插入图片描述
在这个表中就可以找到混淆名,然后手动替换一下就可以了

使用Recaf

Recaf官网

下载之后依然是一个jar文件,双击打开

在这里插入图片描述
点击Config,可以将语言换为中文

选择文件-加载选择要反混淆的Mod,之后再点击Mappings-srg,选择用户目录下的\.gradle\caches\minecraft\net\minecraftforge\forge\Minecraft版本-Forge版本-Minecraft版本\srgs文件夹中的srg-mcp.srg,稍等待一会,或者把选项卡全部重新打开,就可以看到代码已经反混淆完成了。

1.12.2以上的版本

1.12.2以上的版本不再使用mcp的反混淆表,而是使用Minecraft官方的混淆表,而在高版本Mojang官方使用Proguard混淆源代码,并且将混淆表公开了。因此可以直接用recaf+官方反混淆表进行反混淆。

首先需要下载一个与mod版本相同(1.18.1为例子)的minecraft版本,之后找到它的version文件夹:
在这里插入图片描述
打开文件1.18.1.json,往下拉找到client_mappings

在这里插入图片描述
根据url下载名为client.txt的文件。

之后如上方Recaf的操作方式一样,只是要把映射方式改为Proguard即可。

结束

猜你喜欢

转载自blog.csdn.net/m0_74075298/article/details/128517915