当前位置: 首页 > 知识库问答 >
问题:

有没有办法使用gradle来混淆minecraft 1.8.9的代码?

曹嘉许
2023-03-14

我正在编写一个minecraft mod,当我在forge 1.8.9中运行它时,我得到了noSuchMethodError:net。我的世界。客户getMinecraft()。FontRenderObj。然而,当我运行另一个mod时,这个mod可以工作。

我的mod的反编译类文件如下所示

this.renderer = Minecraft.getMinecraft().fontRendererObj;

而另一个看起来像

this.renderer = Minecraft.func_71410_x().field_71466_p;

无论我如何构建我的mod,我的类文件永远不会像这样结束。如何让gradle混淆代码?

共有1个答案

琴英华
2023-03-14

一种选择是使用Gradle来加载ProGuard,并使用它模糊您的JAR。

然后需要这样的依赖项:

buildscript {
     repositories {
        mavenLocal()
        mavenCentral()
     }
     
     dependencies {
        classpath 'net.sf.proguard:proguard-gradle:6.1.1'
     }
}

您还需要定义一个任务,类似于:

task useProGuard (type: proguard.gradle.ProGuardTask) {
    configuration 'proguardcfg.pro'
    injars  jar.archivePath
    outjars "${myDir}/MyJar.jar"
}

如任务中所示,创建一个proguard配置文件,在其中定义proguard应该做什么以及应该处理哪些类的规则。

此文件中的条目可以如下所示:

#-dontobfuscate
-dontshrink
-dontoptimize
-keep class com.jni.** { *; }
...

其中注释掉的参数是防止混淆的命令,接下来的两个命令告诉ProGuard不要缩小JAR或使用它们自己的优化,最后一个条目是包中称为com.jni的类的规则,因为更改本机函数的函数签名是危险的。

阅读更多关于ProGuard:

https://www.guardsquare.com/en/products/proguard/manual/examples

此外,我相信标准的Android构建管道也默认使用ProGuard。

 类似资料:
  • 本文向大家介绍Spring Boot使用Allatori代码混淆的方法,包括了Spring Boot使用Allatori代码混淆的方法的使用技巧和注意事项,需要的朋友参考一下 Allatori混淆技术介绍 Allatori是一个Java 混淆器,它属于第二代混淆器,因此它能够全方位地保护你的知识产权。 Allatori具有以下几种保护方式:命名混淆,流混淆,调试信息混淆,字符串混淆,以及水印技术。

  • 问题内容: 我在AndroidStudio 1.2.1.1和Gradle 1.2.3中使用了ProGuard。 My Gradle的发布版本的配置如下: 我希望混淆类的私有字段。 到目前为止,这是我的proguard配置文件(经过多次尝试): 但是在从AndroidGuard 反编译后,我最终得到了: 我知道这种混淆的使用是有限的,但是我想由ProGuard重命名。怎么做? 这是refcard。

  • 我正在寻找一种使用npm脚本来运行tsc的方法——看 tsc—执行watch,但从不调用nodemon,反之亦然。

  • 问题内容: 我正在寻找如何隐藏我的Python源代码。 如何编码此示例,以使它不易阅读?有人告诉我使用base64,但不知道如何使用。 问题答案: 这只是一个有限的第一层混淆解决方案,但是它是内置的:Python有一个编译器来对字节码进行编码: 生成一个包含字节码的文件,并删除其中的文档字符串,等等。您可以使用.py扩展名重命名该文件,并且可以像程序一样运行,但不包含源代码。 PS:您获得的“有限

  • 问题内容: 我对此代码有两个问题 1)函数f在Override po的引用上如何可见; 2)为什么输出“ private f()” 问题答案: 该方法在班级内部,因此当然可以看到班级的私有成员。 您 没有在类中重写方法,没有多态。变量的类型为,因此它将采用class中的方法。 注意class 中的方法在class中根本不可见。该方法在课堂上是一种不同的方法,不具有任何与该方法在超类。

  • 我应该为依赖于的库的集成测试做出贡献,底层实现是用编写的。测试更倾向于流经一些属性的事件流。 以下存根是实际实现的一部分 现在,我要寻找的代码可能是 注意,我知道搜索。测试中的时间戳可以更新,但这需要在每个!! 但是有没有更好、更可靠的方法在规格2和/或scala中做到这一点? 编辑:我必须指出,我并不期待更改实现,以便用另一个类覆盖/包装。