2

関数のパラメーター値を変更して堅牢性テストを実行することを目的として、関数名やそのパラメーターなどの情報をelfファイルから抽出しようとしています。Windows環境で作業しており、インストルメントしたいelfファイルはpowerPCアーキテクチャ用です。MS VisualStudio上に構築できるオープンソースツールDynInsthttp://www.dyninst.org/を使用してみましたが、clコンパイラ(exeおよびdll形式)でコンパイルされたバイナリを計測します。次の質問があります。

1)Microsoft Visual Studio C ++コンパイラを使用してelfファイルを生成し、DynInstを使用してバイナリをインストルメント化することはできますか?

2)Windowsプラットフォームでelfファイルを抽出してインストルメント化するために使用できる他の手段またはツールはありますか?

objdump、readelf、nmなどはelfを抽出するための機能を提供しますが、私の必要性はそれらもインストルメント化することです。これらのユーティリティを自分のニーズに合わせて調整する方法がわかりません。提案があれば非常に役立ちます。

/ありがとう

4

2 に答える 2

0

VisualStudioコンパイラを使用してELFバイナリを直接生成することはできません。WindowsバイナリはPE形式であり、ELFとは互換性がありません。アセンブリ言語にコンパイルし、結果のファイルに対してスクリプトを実行してPEからELFに変換し、ELF対応のアセンブラー(ガスなど)を使用することで、多くの作業を伴うラウンドアバウトの方法でELF出力を生成できます、yasm、nasm)を使用して、結果のファイルをアセンブルします。

さらに、WindowsはPowerPCアーキテクチャをサポートしていないため、WindowsでPowerPCバイナリを実行することはできません。

DynaInstがコンパイルコードにフックを挿入するだけの場合は、クロスコンパイラを使用して、DynaInstライブラリフックとインストルメントするバイナリの両方をコンパイルする必要があります。

Windowsでも動作するはずのツールが他にもあります。たとえば、gprof関数呼び出しを計測するために使用される特定の関数のみを使用できるようにすることに依存しています。

于 2013-03-20T16:55:24.280 に答える
0

1) Microsoft Visual Studio C++ コンパイラを使用して elf ファイルを生成することは可能ですか?

確かに:ELFは単なるファイル形式です。PowerPC/AIX で .zip ファイルを書き込んで SPARC/Solaris および x86/Windows で読み取ることができるように、どの OS でも ELF ファイルを書き込むことができます。

DynInst を使用してバイナリを計測できるようにするには?

そのようなファイルを計測できるかどうかDynInstはわかりません。

Windows プラットフォームで elf ファイルを抽出して計測するために使用できる他の手段やツールはありますか?

を含むGNUbinutilsパッケージをコンパイルできますreadelf。これを使用して、ファイルからあらゆる種類の情報を抽出できELFます。

ELFファイルlibelf読み書きできるライブラリもあります。Windows 上で問題なくビルドできるかどうかはわかりません。libelf

于 2013-03-20T04:02:01.607 に答える