You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GDB中是否存在存储locals指针的便捷变量?(CTF调试场景)

GDB中获取locals指针的便捷变量方案

GDB本身没有内置的便捷变量直接对应locals指针,但可以通过两种方式快速把它存到自定义变量里,不用手动复制:

  • 用Python API提取(推荐,适合脚本化)
    在GDB里执行以下命令,就能把locals指针存到$locals变量里:

    python locals_ptr = gdb.selected_frame().read_var('__locals_ptr')
    python gdb.execute('set $locals = {}'.format(locals_ptr))
    

    之后直接输入$locals就能调用这个地址,写调试脚本的时候直接用就行。

  • 解析info frame输出(不用Python的方案)
    用GDB的命令组合直接抓取地址:

    set $locals = (void*)`info frame | grep 'locals at' | awk '{print $3}'`
    

    这条命令会自动过滤info frame里的locals地址,赋值给$locals。

另外提一句:在CTF栈溢出调试里,要是你拿locals指针是为了找stack canary或者返回地址,其实也可以通过$rbp(x86_64)或$ebp(x86)加偏移定位,但用locals指针的方式更直接。

内容的提问来源于stack exchange,提问作者Bastian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 14:37:03