0

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 では、難読化したくないものを指定する必要があるようですが、クラスが多すぎるため、代わりに反対のことをしたいと思います: 難読化したいものを指定し、難読化したいクラスとパッケージの数。

ありがとう

4

1 に答える 1

0

難読化者が何を保持する必要があるかを指定するのは通常の方法であり、その逆ではありません。

ただし、externalclassesルール ( link ) を使用してライブラリ クラスパスを定義できます。このパスで定義されているクラスは、難読化も圧縮もされていません。2 番目のエラー (ClassNotFoundException) は、プロジェクトが依存するすべてのライブラリを指定していないことを示しています。

コードを難読化するには、次のようにします。

  • 難読化するコードを 1 つの jar にパックし、それ以外はすべてライブラリとして定義します
  • ルール ( linkpatternset ) で aを使用して、難読化したいクラスを除いて保持するすべてを定義します。keep
于 2014-01-17T10:16:02.600 に答える