0

私は、フラッシュ SWF ファイルを C/C++ ソース ファイルにクロス コンパイルする研究を行ってきました。SWF ファイルをプレーン テキスト ファイル形式に逆コンパイルするためのツールはたくさんあります。Free SWF Decompilerは、これに関する多くのオープンソース ソリューションを提供します。

SWF を C/C++ ソース ファイルに逆コンパイルするために、次の解決策を試しました。

1) Haxe : Haxe コンパイラは、Haxe プログラミング言語をターゲット プラットフォームのネイティブ ソース コードまたはバイナリに変換します。

これを行うには、私はする必要があります

a) SWF をアクションスクリプトファイルに逆コンパイルする

b) アクションスクリプトを Haxe 言語スクリプトに変換する

c) C++ ソース ファイルへのコンパイラ haxe

d) Keil MDK-ARM を使用したリコンパイラ C++ ソース ファイル

欠点: 出力された C++ ファイルは巨大であり、Keil MDK-ARM で再コンパイルするのが困難な C ソース形式の多くの Flex SDK のようなリソースが含まれています。そして、Keil のコンパイル可能なバイナリ コードを取得するのは非常に効率の悪い仕事のようです。

最近、Adobe Flash C++ コンパイラ、つまり FlasCC (Adobe Flash ランタイムをターゲットにすることができる GCC ベースのクロスコンパイラを備えた完全な BSD ライクな C/C++ 開発環境) によってこれを行うための別の解決策を見つけました。

しかし、それが期待どおりに機能するかどうかはわかりません。

FlasCC は c/c++ コードを ActionScript バイトコード (ABC) および LLVM バイトコードにコンパイルできるためです。私の考えは

a) SWF ActionScript バイトコード (ABC) を解析する

b) FlahCC で ActionScript バイトコード (ABC) を読み取ります (これができるかどうかわかりませんか?)

c) FlasCC の同等の ActionScript バイトコード (ABC) によって、その LLVM バイトコードを出力します (これができるかどうかわかりませんか?)

d) LLC による LLVM バイトコードの C++ コードへの変換

このように、ActionScript バイトコードは LLVM LTO(Link Time Optimized) Build を通じて最適化できます。

私は llvm の専門家ではないので、これについてアドバイスが必要です。

これは実行可能ですか?または、これを行う他の方法はありますか?

4

2 に答える 2

0

仕事全体を分解することは、今でははるかに明確に思えます。

todo ジョブは、SWF ファイルを Keil コンパイル可能な C/C++ ソース ファイルに分解することです。

変換するように設計されたオープン ソース ソリューションを見つけました

  1. ABC から TESSA (Type Enriched SSA) Tamarin on LLVM
  2. TESSAからLLVM IRへ
  3. LLVM IR から C (llc による)

やってみます!

于 2014-07-22T03:47:31.527 に答える