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

ProGuard模糊处理后如何保留jar依赖项

令狐宏浚
2023-03-14

我有一个jar文件集合,其依赖关系为菱形模式

              /           \
Dep1.JAR ;     Dep2.JAR
                        /
               

我想用ProGuard对它们进行模糊处理,以保留它们的依赖关系,例如,这样base.jar和dep2.jar的模糊版本就可以单独执行,而不需要dep1.jar和dep3.jar的模糊版本(就像它们一样,不模糊)。有分布在具有相同包名的JAR中的类,以及依赖JAR中的方法,这些方法调用了我想要混淆的方法(在各种类中),在它们依赖的JAR中。

当我试图一次混淆所有的罐子时,ProGuard并不“理解”它们的依赖关系;并从base.jar中的一个类中获取一个静态方法,然后将其移动到dep1.jar中的一个模糊类中。dep2.jar的混淆版本中的代码在base.jar中“期望”该方法,如果dep1.jar不在类路径上,则在运行时失败。

如何确保保留模糊JAR中的依赖项?

文档建议使用增量模糊化,但它似乎需要的-applymapping开关只能使用一个参数,告诉依赖方法在调用它们所依赖的JAR时使用模糊化的名称,然后首先进行模糊化。dep1.jar的模糊处理可以生成一个这样的映射文件参数,而dep2.jar的模糊处理可以生成另一个映射文件参数,但是dep3.jar的模糊处理需要这两个映射文件(加上base.jar的映射文件?)在其-applymapping参数中。但是,dep1.jar和dep2.jar不能混淆在一起(或者它们能混淆吗?),以生成单个映射文件,因为代码可能会从一个映射文件重新定位到另一个映射文件。我必须自己合并映射文件吗?

共有1个答案

居星阑
2023-03-14

最简单(尽管次优)的解决方案是一次处理它们,而不进行优化(-dontoptimize)。

 类似资料:
  • 我知道如何混淆可执行的jar文件,因为它有一个主类。但是我正在尝试创建我的API(已经完成了),我只需要混淆代码。问题是,每当我尝试使用Proguard(一个众所周知的java模糊器)模糊jar文件时,它就会给我一个与“keep”有关的错误。我正在从Proguard运行proguard-gui,在Eclipse中,我将项目导出为一个普通的jar文件(非可执行文件),并试图混淆该jar文件。另外,我

  • 我试图编译和混淆两个项目,其中一个依赖于另一个,并且两个项目都是用Spring boot maven插件构建的。 为了简单起见,让我们将它们称为main和util项目。 因此,如果我首先尝试使用Spring boot maven插件重新打包项目,然后混淆包含util和主要项目的重新打包的jar,那么首先proguard提取重新打包的jar的内容,其中提取的内容将包含util jar。那么progu

  • 我有一个项目,下面给出了文件。当我发出命令时,我希望Maven生成一个JAR,其中包含 所有依赖项和 我的代码的模糊版本。 为了拥有一个包含所有依赖项和模糊代码的JAR文件,我可以做些什么呢? 更新1(17.01.2016 19:54 MSK):更改了ProGuard配置,如下所示,但仍然生成一个带有未混淆类文件的JAR。 更新2(17.01.2016 20:29 MSK):失败。最后的消息可以在

  • 这听起来可能有点可疑,但我需要为自己的应用程序除臭。不久前,我发布了我的应用程序,我用Proguard混淆了它。不幸的是,我没有保存该版本的应用程序,并改变了很多代码。 现在我需要那个旧版本的代码。我还有地图。Proguard生成的txt文件。 我已经改变了课程。dex文件到jar(使用dex2jar工具),现在我需要根据映射对其进行除臭。txt。有什么工具可以帮我吗?也许是Proguard自己?

  • 问题内容: 由于缺乏对我想使用的某些库的支持,我将一些Python开发从Windows迁移到Linux开发。我整天的大部分时间都在搞弄依赖关系无所适从。 问题 每当我选择Linux时,无论是通过apt-get,easy_install还是pip进行安装,我通常都会遇到某种依赖问题,通常与开发库有关。我本可以将几天的时间浪费在应该是简单的任务上,而不是编写代码,而要花更长的时间使库工作。 在哪里可以