2017-06-22 3 views
1

ウェブアセンブリのモジュール構造docに従ってwasmバイナリモジュールの各部分を認識しようとしています。そして、私は以下のショーのようなものをrecognizationsの一部を行っている:webassemblyのバイナリコード構造に混乱があります

screenshot

は赤色でコードが「マジックコード」と名付けました。

ダークオレンジ色のコードは「バージョン番号」と表示されています。

淡黄色のコードは、最初のセクションの「id」とラベル付けされています。

暗緑色のコードは、 "varuint7"形式の "ペイロード長"とラベル付けされています。

次の部分の認識方法についてはわかりませんが、「ペイロードデータ」はどちらかというと分かりにくいですか?そして、 "最後の現在のセクションの終わりは、モジュールの最後のバイトと一致しなければなりません"という意味は何ですか?公式文書に書いた。

答えて

1

わかりやすい既存のWebAssemblyバイナリパーサーを調べることをお勧めします。ここにはthe WebKit oneがあります。

各セクションは、詳細​​としてセクション固有の方法でデコードされます。 idpayload_lengthを参照し、セクションIDに基づいて適切なセクションをデコードします。そのページから、セクション番号は、次のとおりです。

  1. タイプ
  2. インポート
  3. 機能
  4. メモリ
  5. グローバル
  6. 輸出
  7. スタート
  8. 要素
  9. コード
  10. データ

また、0は "カスタム" です。

デコード方法を知るには、それぞれのセクションの説明を参照してください。

"最後の現在のセクションの終わりは、モジュールの最後のバイトと一致する必要があります。"セクションをデコードし、デコードされた長さがペイロードデータと一致しない場合は、検証エラーです。

+0

javascriptcoreから解析ロジックをすべて抽出し、wasmモジュールの解析にスタンドアロンのプログラムフォーカスを組み込むことは可能ですか? – YHSPY

+0

はい。作成した 'ModuleInformation'を使用し、現在のCRTPのアプローチに基づいて独自の' FunctionParser'を実装する必要があります(すでに2度使用されています:1回は通常の解析に、もう一度は到達できません)。もちろん、ライセンスの取得はあなた次第です。 –

+0

ありがとう!実際にはこれを実装するのは本当に難しいですが、やる価値があります!! ;) – YHSPY

関連する問題