Cra*_*rks 5 x86 gdb
我正在 GDB 下调试优化的 Linux 可执行文件。我们的程序因分段错误而崩溃。然而,错误指令似乎并未实际访问无效指针;它基本上是一个mov 0xf00(%ebx), eax操作,其中 0xf00(%ebx) 是有效内存。至少,当我们找到x它的地址时,它就会出现。
mov 0xf00(%ebx), eax
x
用于查看当前捕获的异常的所有详细信息(包括错误操作码尝试访问的确切内存地址)的GDB 命令是什么?此信息应该位于异常陷阱框架中,但我不知道如何通过 GDB 获取该信息。
这是针对 Ubuntu 下的 x86 的。
Emp*_*ian 4
然而,错误指令似乎并未实际访问无效指针;它基本上是一个 mov 0xf00(%ebx), eax 操作,其中 0xf00(%ebx) 是有效内存。至少,当我们改变它的地址时它就会出现。
我猜测该地址实际上无效(mmap编辑PROT_NONE)。
mmap
PROT_NONE
GDB 可以检查它的原因是,在 Linux 上ptrace(GDB 使用它来访问劣质内存)会很乐意从这些地址读取,而应用程序本身却不能。
ptrace
查看当前捕获的异常的所有详细信息的 GDB 命令是什么
print $_siginfo当 GDB 因信号而停止时尝试。文档在这里。
print $_siginfo
归档时间:
13 年,7 月 前
查看次数:
2456 次
最近记录: