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

如何在已剥离符号的可执行文件中以单步模式启动程序?

调试无符号表的汇编程序:入口点断点/单步启动方法

针对符号被剥离的汇编程序,你可以用以下几种GDB操作直接定位到入口点并开始调试:

方法1:用starti直接启动并停在第一条指令

这是最直接的方式,starti命令会让GDB启动程序后,在进程执行的第一条用户态指令处立即停下,完全不需要依赖符号表,刚好对应可执行文件的入口点(也就是原本_start的位置)。

操作步骤:

  • 加载程序到GDB:gdb ./your_stripped_program
  • 输入starti,回车后程序就会停在入口点的第一条指令
  • 之后用si(单步执行一条指令)或者ni(单步跳过函数调用)开始调试

方法2:手动获取入口地址后设断点

如果你想先确认入口地址,再手动设置断点:

  1. 在GDB里输入info file,输出里会有Entry point:字段,比如:
    Entry point: 0x555555555040
    
  2. 用地址设置断点:b *0x555555555040(注意星号不能少,代表直接在内存地址设断点)
  3. 输入run启动程序,会直接在入口点停下

补充说明

  • starti和普通的start命令不同:start依赖符号表在main函数开头停下,而starti完全不依赖符号,只认进程启动后的第一条指令,完美适配符号被剥离的场景。
  • 如果提前用objdump这类工具查到了入口地址,也可以直接在启动GDB时指定断点:gdb -ex 'b *0x1234' ./your_stripped_program,再输入run即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:35:59