Solaris で実行するために C からコンパイルされた実行可能ファイルがある場合、関連する不完全な実行可能ファイルのコンパイルに使用されたコンパイラを特定できますか?
文字列またはファイル コマンドのいずれかを使用しても何も表示されず、マジックには特定のものが含まれていないようです。
コンパイラは通常、実行可能な出力ファイルにフィンガープリントを入れますか?
乾杯、
Solaris で実行するために C からコンパイルされた実行可能ファイルがある場合、関連する不完全な実行可能ファイルのコンパイルに使用されたコンパイラを特定できますか?
文字列またはファイル コマンドのいずれかを使用しても何も表示されず、マジックには特定のものが含まれていないようです。
コンパイラは通常、実行可能な出力ファイルにフィンガープリントを入れますか?
乾杯、
はい、IDAはこれに最適です。FLIRTと呼ばれる技術を使用しています。
実行可能ファイルが削除されていない場合は、/usr/ccs/bin mcs-p を試してください。これにより、通常、コンパイラ、リンカー、および使用されているすべてのヘッダー ファイルが表示されます。
識別しようとしている各コンパイラで小さなテストアプリを作成します。次に、16進エディターで結果を確認し、パターンを見つけてください。たとえば、Microsoftのリンカからの「リッチ」署名など、非常に明白であることが判明する場合があります。
削除されていません:
$ cc -O hello.c
$ ファイル a.out
a.out: ELF 32 ビット MSB 実行可能ファイル SPARC32PLUS バージョン 1、V8+ 必須、動的にリンク、削除されていない
$ 文字列 -a a.out | grep cc
/opt/solarisstudio12.3/prod/bin/cc -O hello.c
$ dwarfdump -i a.out | grep compile_o
DW_AT_SUN_compile_options Xa;O;R= Sun C 5.12 SunOS_sparc パッチ 148917-07 2013/10/18;backend;raw;cd;
ストリップ:
$ ストリップ a.out
$ ファイル a.out
a.out: ELF 32 ビット MSB 実行可能ファイル SPARC32PLUS バージョン 1、V8+ 必須、動的にリンク、削除
$ 文字列 -a a.out | grep cc
(なし)
コンパイラは通常、コンパイルされたファイルにプレーンテキストとして独自の「署名」を追加します。文字列などのツールを使用して、平文を読み出すことができます。