10

ARM 用にビルドされたオブジェクトを gcc で逆アセンブルしようとしています。残念ながら、objdump はコードが ARM と Thumb のどちらであるかを推測しようとしていますが、間違っています。実際には ARM であるのに、コードが Thumb であると認識します。

objdump には、強制的にすべての命令を Thumb ( -Mforce-thumb) として解釈するオプションがありますが、ARM モードを強制するオプションはありません!

これは私には非常に奇妙な省略のように思え、作業を完了する能力を著しく妨げています (私は組み込みデバイスを使用しており、デバッグの唯一の手段は逆アセンブリを確認することです)。Thumb をサポートしない ARM アーキテクチャを使用するよう objdump に指示するなど、さまざまなアプローチを試しましたが、何も機能していないようです。何か案は?

(そして、はい、命令が本当にARMであることは知っています...)

4

2 に答える 2

5

arm-linux-gnueabi-objdump -marm -b binary -D私のためにトリックを行います。ただし、シンボル情報は保持されないため、探しているものとはまったく異なりますが、逆アセンブルが得られます。これが開始点です。

于 2013-03-06T14:29:12.850 に答える
-1

これは、コンパイラ/リンカーまたは objdump のバグのようです。通常、シンボルが Thumb または ARM の場合は適切にマークし、それに応じて逆アセンブルする必要があります。

とはいえ、試すことができることがいくつかあります。

  1. ファイルをプレーン バイナリとして解釈する (-b binary -D) - これにより、シンボル チェックが無効になり、ファイル全体が ARM として逆アセンブルされます。欠点: 出力にゴミが多く、適切なアドレスがありません。
  2. IDA プロを使用します。推測が間違っていても、いつでもその決定をオーバーライドできます。また、それははるかに優れた分解環境です:)
于 2011-08-25T16:56:01.920 に答える