私が見たり読んだりしたことによると、誰かが本当にあなたのソフトウェアをリバース エンジニアリングしたり、逆コンパイルしたりしたい場合、ProGuard はそれらを止めません。しかし、それは少なくとも控えめな抑止力ですか? 後でスタック トレースを翻訳する手間をかける価値があるかどうかはわかりません。
2 に答える
プロガードをお勧めします。難読化 (定数プールで使用される名前を大幅に短縮できます) がなくても、使用されているライブラリなどの「デッド コード」(未使用のメソッド) を削除できます (すべてを便利にマージするためにも使用できます)。
特に「正しくなる」には少しいじる必要があります。動的にロードされたクラスがある場合 - しかし、強くお勧めします。ただし、スペース節約による実際のメリットは、何を削除できるかによって異なり、一般的には外部ライブラリが増えるほど高くなります。
さて、難読化についてですが、これは他の難読化ツールと同じように機能します。コードを意味のある名前に「逆コンパイル」することを不可能にします。
ただし、難読化によって超秘密アルゴリズムが保存されたり、秘密鍵が隠されたりすることはありません。JVM (または変換後の Dalvik) がそれを理解する必要がある場合は、逆コンパイラや、本当にアクセスしたい人なら誰でも理解できます。あなたのコードは、バイトコード形式で持ち上げて、単に経由で使用することさえできます. リフレクション (ドキュメントのないひどい API を想像してみてください):本当にアクセスしたい人は誰でもアクセスできます。しかし、おそらく難読化により、このタスクはコスト/支払いに対して実行不可能になります:「それは依存します」.
スタックトレースを翻訳したくないですか? シンプル:デバッグに使用しない(ユーザーからトレースを取得するのにはあまり役に立たない) か、難読化を有効にしない(他の利点は引き続き適用されます) ;-)
ハッピーコーディング。
プロガードは、少なくともファイルサイズに関してアプリをできるだけ小さくすることを可能にします!
それは本当のプラスです。
proguard.config=proguard.cfg
プロジェクトの default.properties ファイルが必要な場合は、Eclipse で開発およびコンパイルするときに自動的に使用されます。
それも本当のプラスです。