最近、私はARMベースのマイクロコントローラ用のELF実行ファイルを手に入れました。私はarm-none-eabi-objdump
ですべてをダンプすることでそれを点検しようとしたときに驚いたことに、それは私はそれが独自のツールチェーンを使用してコンパイル(およびリンク)されていますことを学んだ、バイナリを供給者に尋ねる時にエラー独自のARM ELFバイナリ
File format not recognized
で失敗まま私は彼らに特別な宣伝を避けるために言及しません。その後、バイナリを分解するために、私は上記の独自のツールチェーンからユーティリティが必要であると言われました。これで私は好奇心をそそられた。 GNUのobjdumpがELFファイルを解析できないのはどうでしょうか?私の知る限り、ELFは標準のフリーファイル形式です。確かに、命令セットが認識されなくても、セクションおよびシンボルテーブルならびにシンボルのバイナリ分解を少なくとも得ることが可能でなければならない。情報が暗号化されている可能性がありますか?
、あなたはおそらく、 '' objdump'の代わりにreadelf'で開始する必要があります。 –
素晴らしいブログ、ありがとう。あなたの推測に続いて、バイナリを私に送ってくれた人に、それを分解しようと依頼しました。同じ種類のエラーが発生することが分かります。何らかの調査の後、我々は何とかバイナリが壊れていることを発見しました。私はGNU Binutilsを通過したときに期待どおりに動作する新しいものを与えられました。結局のところ、暗号化はありません。意図的ではありません。それでも、リンク先の記事は本当に面白かったです。 – goblin
@EmployedRussian readelfが確かに正しくELFヘッダを処理しないが、それは言う: 'readelfが:エラー:エラー:セクションheaders' ' readelfがの0x2800バイトで読み取ることができません。セクションヘッダの0x3e80000バイトで読み取ることができませんが'' readelfが:エラー:セクションヘッダは使用できません '' readelfが!:エラー:プログラムheaders' の0x800000バイトで読み取ることができません。それ以外の場合は正しく認識ELFクラス、エンディアン、ABI、旗、テーブルのサイズなど – goblin