1

シンボルのない Linux プログラムをデバッグしています。バイナリが削除されます。大したことではありません、私はそれを処理できます。ただし、特定のコードに到達したときに、デバッガー内で呼び出しをスキップするにはどうすればよいでしょうか?

私が求めているのはこれではありません: gdb を使用してアセンブリをデバッグし、呼び出しをスキップする方法

私が持っている場合、私は興味があります:

 call 0x12345678
 ...

を実行せず...にストレートにジャンプするcall

どうやってやるの?

4

2 に答える 2

2

もう少し読んだ後、解決策を見つけました。

私の場合、オペコードのcall長さが 5 バイトであることはわかっているので、GDB レジスタ名 $pc(「プログラム カウンタ」) を設定してジャンプすることで解決できます。

set $pc+=5

雇用されたロシア人によるこの回答に関するコメントによると、以下は同じ機能を提供します:

jump *$pc+5

call atアドレスがあり、5 バイトをスキップしたいと仮定すると、で0x01234567次のことができます.gdbinit

b *0x01234567
commands 1
x/i $pc
echo Not executing the call\n
set $pc+=5
x/i $pc
end
于 2013-04-20T21:06:03.327 に答える
1

ripこの直後の命令のアドレスに値を設定しますcall 0x12345678

于 2013-04-20T20:04:09.100 に答える