YGuard模糊了单个类,包和排除库

时间:2013-05-06 10:30:38

标签: yguard

我正在尝试使用YGuard来混淆程序的某些部分,其中包含加密方法和其他敏感信息(一旦我弄明白,我将以其他方式进一步保护这些信息)。

因为程序非常复杂并且包含很多库,所以它显然会发出一系列警告并最终失败:

  WARNING: Method initialize_ffi_type is native but com/sun/jna/Native is not kept/exposed.
  WARNING: Method getAPIChecksum is native but com/sun/jna/Native is not kept/exposed.
  [...]
  yGuard was unable to resolve a class (java.lang.ClassNotFoundException: com.sun.tools.javac.parser.Parser$Factory)

现在无论如何我想

  • 排除目前为止所有开源的库都无法隐藏
  • 对某些类或某些包的方法和变量进行模糊处理,其余部分保持不变。

到目前为止,在YGuard中,似乎我必须指定我不想被混淆的内容,但是我有太多的类,我想要反过来:指定我想要混淆的内容和继续增加我想要混淆的类和包的数量。

由于

1 个答案:

答案 0 :(得分:0)

混淆器通常会指定应该保留的内容,而不是相反。

但是,您可以使用externalclasses规则(link)定义库类路径。在此路径中定义的类既不会被混淆也不会收缩。您获得的第二个错误(ClassNotFoundException)表示您尚未指定项目所依赖的所有库。

为了现在模糊您的代码,您可以做的是:

  • 将要混淆的代码打包在一个jar中,并将其他所有内容定义为库
  • patternset规则(link)中使用keep来定义要保留的所有内容,除了您要混淆的类。