2012-03-14 10 views
1

Mac OSでは、アプリケーション上のすべてのコンテンツを読むことができます(mxmlおよびファイル)。 実際にアプリケーションを右クリックすれば、すべてのアプリケーションコンテンツとすべてのファイルを見ることができます。 それで、会社がそのような航空アプリケーションを配布することは非常に危険です。 これらのファイルを保護するソリューションが存在します。Protect Airアプリケーションのコンテンツ

ありがとうございました

+0

SWFファイルにコンパイルした場合は、ソースファイル(MXMLおよびAS)をSWFの逆コンパイルの手前に表示するべきではありません。 –

答えて

1

すべてのコードを読むことができるデコンパイラがありますが、暗号化ソリューションを試してみる価値のある人がいます。 http://forums.adobe.com/message/3510525#3510525

引用テキスト(ページの場合には消去される)

私が使用する方法は、あなたのほとんどをencrpytできるようになります:

は、この記事を見てください(これは、デスクトップAIRアプリケーションのためです)ソースコードはすべてのコンピュータに固有のキー を使用しています。 ソフトウェアの最初のダウンロードは、実際のプログラムが含まれていないシンプルなエアアプリです。 これは、クライアントmac のアドレスと購入時にユーザが入力した起動コード のリストを最初に後退させるシェルのようなものです。これはサーバーに送信され、ログに記録されます。アクティベーションコード はファイルクライアント側に保存されます。サーバーでは、MACアドレスと アクティブ化キーを使用して暗号化キーを作成します。次に、 プログラムコードの大部分は、その鍵を使用して暗号化され、次に部分 に分割され、クライアントに送り返されます。クライアントは、部品を一緒に戻して とし、暗号化されたファイルを保存します。実行時にシェルは アドレスリストとアクティベーションキーを見つけ、サーバと同じ方法を使用して が暗号鍵を取得し、プログラムファイルを復号化します。簡単に実行して、 がロードされていることを確認してください。 encyptionについては、 がphpとjavascriptで動作するaesメソッドが見つかりました。

次は、私はこの方法では、私はそれを書いたので、私はいくつかの weeknessesがある知っているが、それは非常に困難に別のコンピュータに をコピーすることができますプログラム

var loader = air.HTMLLoader.createRootWindow(true, options, true, windowBounds); 
loader.cacheResponse=false; 
loader.placeLoadStringContentInApplicationSandbox=true; 
loader.loadString(page); 

をロードするためにこのコードを使用セキュリティを強化するが、それを難し​​くするために私はobv。シェル コード。それは少なくとも海賊からほとんどを保ちます。しかし、私が見つけたこれとの問題 があります。最初にnetworkInfoを使って のMACアドレスのリストを取得していましたが、これはテスト用のWindows XPコンピュータでは失敗しました。 ワイヤレスがオフになっても、MACは返されませんでした。私は をVISTAまたは7で再現することができませんでした。 Macコンピュータで がテストされていませんでした。これを修正するには(少なくともウィンドウの場合)。私は は、MACリストを取得し、 に含まれているEXEに変換された単純なバットファイルを書いた。これにより、ネイティブの インストーラが作成されます。この

var nativeProcessStartupInfo = new air.NativeProcessStartupInfo(); 
var file = air.File.applicationDirectory.resolvePath("findmac.exe"); 
nativeProcessStartupInfo.executable = file; 
process = new air.NativeProcess(); 
process.start(nativeProcessStartupInfo); 
process.addEventListener(air.ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData); 
process.addEventListener(air.ProgressEvent.STANDARD_ERROR_DATA, onErrorData); 
process.addEventListener(air.NativeProcessExitEvent.EXIT, onExit); 
process.addEventListener(air.IOErrorEvent.STANDARD_OUTPUT_IO_ERROR, onIOError); 
process.addEventListener(air.IOErrorEvent.STANDARD_ERROR_IO_ERROR, onIOError); 

でexeファイルを呼び出すのArray.pushを使用してonOutputDataイベントに一緒にリストを入れて、 はfindmacを使用してフォーカス喪失時のイベントに引き続き。exeは 同じ情報を毎回返します(私が知っている) ネイティブインストールを使用すると、標準アプリケーションの更新プロセスが壊れてしまうので、あなた自身で作成する必要があります。私のアップデートは上記のように と同じ方法で処理されます。これは、MACリストこのメソッドを使用して

@Echo off 
SETLOCAL SET MAC = SET Media = Connected 
FOR /F "Tokens=1-2 Delims=:" %%a in ('ipconfig /all^| FIND "Physical Address"') do @echo %%b ENDLOCAL 

を取得するための.batファイルの内容であることは 方法であなたの前の試みで実装することが簡単になります。実行時にアクティベーションコードがない場合はフルバージョンではなく サーバーから試用版を取得してください。

1

コードを100%保護することはできません。結局のところ、コンピュータがそれを実行できるならば、言語にかかわらず、それは逆コンパイルすることができる。しかし、あなたはそれをもっと難しくすることができます。

1つの方法は、別の回答に記載されているようにswfを暗号化することです。しかし、 "攻撃者"が必要とするのは、鍵を見つけて、すべてのswfを解読することだけです。

もう1つの方法は、難読化ツールを使用することです。難読化ツールは暗号化に依存せず、逆コンパイルを防ぐものでもなく、逆コンパイルされるものを理解するのが難しくなります。

たとえば、saveInvoice()というメソッドがある場合、obfuscatorはその名前をaa1()などの名前に変更するため、その関数が何をするかを推測するのが難しくなります。基本的にすべてをスパゲッティコードに変換します。

逆コンパイラを使用して、SWFファイルから何が得られるのか(たくさんあります)、難読化ツールを使用してあなたの意見に合っているかどうかを確認できます。

私がbtwを支持していないhttp://www.kindi.com/の例は、すぐにGoogleに表示されます。

関連する問題