web-dev-qa-db-ja.com

Android PhonegapモバイルアプリでHTML + JSアセットを暗号化する方法は?

Phonegapの基本ラッパーとHTML5を使用して作成したモバイルアプリがあります。私の目標は、アセットディレクトリ内のファイル(JSおよびHTMLファイル)を暗号化して、APKファイルを解凍してJSソースを表示したい人が読めないようにすることです。

わかりました、私は絶対的な完璧な解決策がないことを知っています。この質問に向かう途中で、ソースのコピー防止を解決する方法(JSの縮小、難読化など)をすでに試しましたが、元のコードに到達するのは非常に簡単であることがわかりました(JSBeautifier、firebugを使用) 、難読化されたスクリプトなどを含む...)。

だから私の質問は-JS + HTMLファイルを暗号化する簡単な方法(APKファイルを単に解凍しただけでは読めず便利)とJava for Android プラットホーム ?

注: Java言語の知識がないので、使用できる実際の例を含めてください。

編集:最終的なAPKパッケージを作成するときにProGuard機能も調査しましたが、Javaファイルのみを処理し、アセットディレクトリをそのままにしておくため、役に立たないです。

28
Frodik

少し前に私は同じ問題を抱えていますが、iOS上にあります。そして、その結果は、PhoneGap for iOSにパッチを適用した後でのみでした。 http://oleksiy.pro/2011/09/20/phonegap-application-encryption/ に記事を書きました。また、Androidの場合、Javaコードは99%逆コンパイルされる可能性があり、ハッカーがあなたのキーを見る可能性があるため、このメソッドは弱い可能性があります。

11
Oleksii G.

私が見つけた最良の組み合わせは DojoToolkit と詳細モードのClosure Compilerです。

詳細モードでクロージャを使用すると、美容ツールを通過した後でも、JavaScriptコードをリバースエンジニアリングすることがほぼ不可能になります。 JavaScriptコードが認識およびリバースエンジニアリングの可能性を超えて難読化されると、HTMLは秘密の多くを開示しなくなります。

モバイルアプリケーションの詳細モードでClosureCompilerとともにDojoToolkitを使用するためのこのリンク:

http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf?by-user=t

そしてもちろん、Dojo ToolkitはPhoneGapでうまく機能します。

4
Stephen Chung

これを行う簡単な方法はありません。 JavaScriptを暗号化する場合は、それを復号化するための何らかのキーが必要になります。キーをデバイスに保存することはできません。そのため、キーを見つけてソースコードを復号化するのは簡単です。アプリケーションでユーザーのログインが必要な場合は、ユーザーがログインしたら暗号化キーを返し、そのキーを使用してJSファイルとHTMLファイルを復号化できます。 PhoneGapプラグインを介して使用できる標準のAndroid暗号化ライブラリがあります。

そうは言っても、それは単なるJavaScriptなので、本当に暗号化する必要があるものがある場合は、おそらくアプローチの変更を検討する必要があります。

4
davejohnson

Webビューを使用して、base64文字列を読み込むことができます。

protected String base64Str = "+wL00h2L....";
wv1.loadData(base64Str, "text/html; charset=utf-8", "base64");
0
Rodolphe Ahmad