【问题标题】:YGuard obfuscate single class, package and exclude librariesYGuard 混淆单个类,打包和排除库
【发布时间】:2013-05-06 10:30:37
【问题描述】:

我正在尝试使用 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 中似乎我必须指定我不想被混淆的内容,但是我有太多的类,我想做相反的事情:指定我想要混淆的内容和继续增加我想要混淆的类和包的数量。

谢谢

【问题讨论】:

    标签: yguard


    【解决方案1】:

    混淆器的正常做法是指定应保留的内容,而不是相反。

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

    现在为了混淆你的代码,你可以做的是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 2021-04-16
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      相关资源
      最近更新 更多