2013-05-06 39 views
0

我试图使用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) 

现在这意味着什么,我想

  • 排除到目前为止,所有开源软件都没有什么可以隐藏的库
  • 仅对某些Class或某些软件包的方法和变量进行混淆处理,并保持其余不变。

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

感谢

回答

0

它是模糊处理指定正常的做法应该怎样保持,而不是周围的其他方式。

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

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

  • 包要在一个罐子被扰乱,并确定一切为库
  • 使用一个patternset代码你的keep规则(link)来定义要保留的所有内容,除了您想要对其进行混淆的类。