我正在调试一个我没有符号的Linux程序。剥离二进制文件。没什么大不了的,我能解决这个问题。但是,当我到达特定的代码片段时,如何在调试器内跳过调用?
我要问的是不这个:Use gdb to debug assembly, how to skip a call
如果我有:
,我感兴趣 call 0x12345678
...
在没有执行 ...
的情况下直接跳转到call
。
我该怎么做?
答案 0 :(得分:2)
经过多次阅读后,我找到了解决方案。
在我的情况下,我知道call
的操作码是五个字节长,所以我可以通过设置GDB register name $pc
(“程序计数器”)来跳过它来解决它:
set $pc+=5
根据Employed Russian对此答案的评论,以下内容提供了相同的功能:
jump *$pc+5
假设您在地址call
处有0x01234567
并希望跳过五个字节,则可以在.gdbinit
中执行以下操作:
b *0x01234567
commands 1
x/i $pc
echo Not executing the call\n
set $pc+=5
x/i $pc
end
答案 1 :(得分:1)
将rip
值设置为此call 0x12345678
之后的指令地址。