gpt4 book ai didi

linux - 在没有符号的情况下调试时如何跳过(不执行!)GDB 中的调用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:58 26 4
gpt4 key购买 nike

我正在调试一个没有符号的 Linux 程序。二进制文件被剥离。没什么大不了的,我能应付。但是,当我到达特定代码段时,如何跳过调试器内部的调用?

我要问的是不是这个:Use gdb to debug assembly, how to skip a call

我感兴趣的是:

 call 0x12345678
...

直接跳转到...而不执行调用

我该怎么做?

最佳答案

经过更多阅读,我找到了解决方案。

在我的例子中,我知道 call 的操作码是五个字节长,所以我可以通过将 GDB register name $pc(“程序计数器”)设置为跳过它:

set $pc+=5

根据 Employed Russian 对此答案的评论,以下提供了相同的功能:

jump *$pc+5

假设您在 0x01234567 地址调用 并且想要跳过五个字节,您可以在 中执行以下操作。 gdbinit:

b *0x01234567
commands 1
x/i $pc
echo Not executing the call\n
set $pc+=5
x/i $pc
end

关于linux - 在没有符号的情况下调试时如何跳过(不执行!)GDB 中的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16124553/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com