2016-04-19 1 views
0

、私はそれらの多くは暗号化されたバイナリコンポーネントが含まれていることに気づきましたあなたのアプリケーションでは上記のように)、さらに処理するためにActionScriptを使用してロードするにはどうすればよいですか?

注:私のIDEはFlash Builderで、私はAdobe AIRアプリケーションを使用しています。

答えて

4

ただ、デニス・Kokorinの答え@上拡張し、あなたの懸念をクリアする...

私はそれらの多くは暗号化されたバイナリコンポーネントが含まれていることに気づい:

だけDefineBinaryData」があることに注意してください"は、SWF形式の標準セグメント(タグと呼ばれます)であり、デコンパイラのトリックではありません。存在させるには、単に[embed]あなたのAS3コードを介してファイル。これは、タグ内で定義されたバイナリデータになります。

私の質問は、あなたのアプリケーションとどのようにあなたはさらにそれを処理するために、ActionScriptの を使用して、それをロードしないで(上記 のように)バイナリコンポーネントが含まれないか、でしょうか?

読み込みは、埋め込むファイル形式によって異なります。 SWFの画像(jpg、pngなど)& movieClipにはBitmapを使用し、MP3データを再生可能(PCM)サウンドにデコードするにはSoundを使用してください。 NetstreamのAppendBytesはビデオバイトをデコードします。何かを "暗号化"したい場合は、それを埋め込む前に暗号化してください。どの暗号化方式を使用するかを決める必要があります。もちろん、AS3アプリケーションでは暗号化コードを処理してから処理する必要があります。

以下のコードでは、さまざまな形式のコンテンツを読み込む例を示しました。そこから、通常どおりに処理することができます(例えば、ピクセル編集の場合はbitmapdata、オーディオサンプルの編集の場合はsound.extractなど)。また、編集するバイト値の場合、バイトをByteArrayに入れる方法も示しました。 ByteArrayの取扱説明書をお読みください。このguideもお手伝いします。

package 
{ 

import flash.display.MovieClip; 
import flash.utils.*; 
import flash.display.*; 
import flash.events.*; 
import flash.media.*; 

public class embed_test extends MovieClip 
{ 

[Embed(source="image.jpg")] private var emb_Image : Class; 
[Embed(source="track.mp3")] private var emb_MP3 : Class; 
[Embed(source="vctest.swf")] private var emb_SWF : Class; 

//# for access to bytes (binary data) 
[Embed(source="image.jpg", mimeType="application/octet-stream")] private var emb_Bytes : Class; 

    public function embed_test() 
    { 
     var my_Pic : Bitmap = new emb_Image(); 
     addChild(my_Pic); //# display image on stage 

     var my_Snd : Sound = new emb_MP3(); 
     my_Snd.play(); //# play sound 

     var my_Swf : MovieClip = new emb_SWF(); 
     addChild(my_Swf); //# display SWF on stage 

     var my_BA : ByteArray = new emb_Bytes as ByteArray; 
     trace("bytes length : " + my_BA.length); //# check bytes total is correct 
     trace("bytes (HEX) : " + bytes_toHex(my_BA)); //# check bytes in hex format 

    } 

    private function bytes_toHex (input : ByteArray) : String 
    { 
     var strOut : String = ""; var strRead:String = ""; 
     var input_Size : uint = input.length; 
     input.position = 0; 

     for (var i:int = 0; i < input_Size; i++) 
     { 
      strRead = input.readUnsignedByte().toString(16); 

      if(strRead.length < 2) { strRead = "0" + strRead; } //# do padding 
      strOut += strRead ;  
     } 

     return strOut.toUpperCase(); 
    } 

} 

} 
+0

PS:デコンパイラの解読プロセスがどのように機能するかを知りたい場合は、** [この記事](https://blog.avast.com/2011/09/09/breaking-through-flash-obfuscation/)を読んでみてください。 )**。 'DefineBinaryData'を単語だけで検索し、その段落を読み込みます(' doABC'部分は先に説明しています)。 –

2

バイナリデータを準備し、実行時に[Embed]メタタグ経由で読み込むことができます。

+0

私は、難読化されたAdobe Flashアプリケーションに、このコンポーネントが実行時に組み込まれていることに気付きました。実行時に、彼らは単純にバイナリを解読し抽出します。このような何かがどのようにできるか考えてみましょうか? – SivaDotRender

+0

自動化が必要な場合は、antまたはgradleを参照する必要があります。 Mavenはflex 4.8.0以降ではそれほどコンビニエンスではありません。とにかくパッケージング前の内容の暗号化は、IDEの標準的な実装ではありません。 –