2017-07-11 20 views
0

私はGDBでelfを実行しており、実行中のコードにテキストセクションを書きたいと思っています。私はシェルから次のようにすることができます:GDBでテキストセクションを書き込み可能にするにはどうすればよいですか?

set {int}[text_address] = 0x8008face 

しかし、このアドレスに書き込む命令を実行すると、爆発します。

私はむしろelfを変更するのではなく、その場でrwxにアドレス範囲を設定します。

編集:これは、シミュレーションされたものであり、ネイティブではありません。

+0

GDBから 'mprotect'を呼び出して、ページを書き込み可能にしようとしましたか? –

+0

編集が追加されました。おそらくx86ではないので、これはシミュレートされているはずです。私はmprotectを同等と呼び、テキストを書き込み可能にしませんでした。ありがとう、それはおそらくネイティブで働いていたでしょう。 –

+0

シミュレータにROMの代わりにRAMにコードを書き込まなければならない場合があります。 –

答えて

0

--writeフラグを付けてGDBを呼び出します。

Documentationはこう言っています:「読み書きのための実行可能ファイルとコアファイルを開きます。これはGDB内の 'set write on'コマンドと同じです(Patching参照)。 。

たとえば、this answerも参照してください。

関連する問題