2

Assets/フォルダーに大量のJavaScriptを含むアプリケーションを公開しようとしています。最小化してすべて(JS)を1つの大きなファイルに約500kbに​​縮小しました。暗号化してアセットフォルダから隠す方法を探しています。

あなたの意見では、それを行うための最良の方法は何ですか?

  1. Javaクラス内にプレーンな文字列として格納し、(可能かどうかはわかりませんが)これを具体的に暗号化するようにproguardに指示します。->私はそれをWebView経由して提供しますonintercepturlloading

  2. Assets内に暗号化されたファイルとして保存し、サードパーティまたはJava暗号化ルーチンを使用してホットデクリプトします。

  3. あなたが望むものなら、なんでも

理想的には、ソリューションをビルドプロセスの一部として含める必要がありますが、他にソリューションがない場合は、暗号化されたデータを手動で生成します。

編集:DexGuardは専門的な方法のようですが、350ユーロで、無料の代替手段はありますか?

なぜ暗号化したいのか聞かないでください。ある日あなたが歯科医に行く必要があるのと同じように私はそれをする必要があります。

4

2 に答える 2

2

ベンダーロックインになる可能性があるため、サードパーティのツールに依存しないことをお勧めします。つまり、サードパーティのツールがソフトウェアの開発などを停止した場合です。私はJavascriptのコンテンツを1つの大きなファイナルスタティックに入れて、Stringあなたが言ったように、それを魔法のようにするようにProguardに指示します。

Proguardのドキュメントから取得。

ProGuardは文字列定数を暗号化しますか?

いいえ。プログラムコードの文字列暗号化は、定義上完全に可逆的である必要があるため、難読化レベルを向上させるだけです。コードのフットプリントが増加します。ただし、一般的な需要により、Android用のProGuardのクローズドソースの兄弟であるDexGuardは、クラスの暗号化と機密APIへのアクセスの非表示に加えて、文字列の暗号化をサポートしています。

于 2013-03-07T12:47:01.923 に答える
0

安全と見なされるようなことができることは絶対にありません。したがって、難読化は、無駄な労力とセキュリティの獲得(ハッキングをより困難にしますが、ごくわずかです)の間の最善の妥協点です。

暗号化スキームを保護するには、キーが必要になります。そして、あなたはあなたの鍵を隠す場所がありません。APKに含めるか、APKにサーバーからダウンロードさせることができます。どちらも適切なツールで簡単に見つけることができます。

ハッカーの速度を落としたいだけなら、簡単なことをしてください。javascriptの部分をさまざまな場所に広げ、のような単純で高速なエンコードでエンコードしますbase64。次に、それらをその場で組み合わせます。プロの人はそれを他の暗号化スキームと同じように破りますが、それを実装するのに何分も無駄にすることはありません。実際のアプリをコーディングするためのより多くの時間。

DexGuardは私が上で説明したこと(文字列の難読化)をほぼ実行しますが、インディー開発者にとってはかなり高価だと感じています(最も安いライセンスは350ドルです)。

于 2013-03-07T12:48:39.973 に答える