0

GDBに問題があります。現在、バッファオーバーフローを調べています。コマンドを実行して、に関する情報を見つける必要があります$Info regが、いずれの結果も得られません。私はそれらのそれぞれで試してみましたが、動作するだけです。ebpeipespInfo reg $nameebp

基本的にこれは何が起こるかです:

(gdb) i r
rax            0x7fffffffe180   140737488347520

rbx            0x0  0

rcx            0x7fffffffe570   140737488348528

rdx            0x7fffffffe1a6   140737488347558

rsi            0x6  6

...

...

...



es             0x0  0

fs             0x0  0

---Type <return> to continue, or q <return> to quit---+

gs             0x0  0

(gdb) info reg $ebp

ebp            0x41414141   1094795585

しかし

(gdb) info reg $eip

Invalid register `eip'

メモリのこれらの部分の値を取得するにはどうすればよいですか?

4

1 に答える 1

2

eipamd64archで呼び出されるregはありません

bp//ebpとは何かを示しましょう。rbpデータレジスタにはamd64archに64ビットが含まれています。

64 ---------------------------- 32 ---------- 16 ---- 8 ---- 0
| <--------------------------- rbp ------------------------> |
                                 | <--------- ebp ---------> |
                                               | <--- bp --> |

したがって、別の名前で対応するビットにアクセスできます。

ripただし、の下位ビットにアクセスする理由がないため、常に単語全体にアクセスしますinstruction pointer。その結果、amd64archにはeip/ipレジスタがありません。

于 2012-08-31T05:56:14.573 に答える