【发布时间】:2014-11-21 03:58:33
【问题描述】:
我正在学习"Hacking: The Art of Exploitation"。我正在尝试遵循代码示例,但由于某种原因,汇编代码根本与我实际 Linux 上的代码不匹配(在 Virtual Box 上作为访客运行)。我已经确定我已经安装了 32 位 Linux 操作系统。是否有任何 args 可以传递给 gcc,让我将代码编译成与书中给出的非常匹配的程序集?
我会很好地协调本书之间的代码差异和我看到的如果它们是次要的,但我看到的差异是明显的。我不喜欢从“预配置的孵化器环境”运行代码,因为这会抑制我的技能发展。
【问题讨论】:
-
相关:Confused by [ebp-0xc] instead of [ebp-4] in Art of Exploitation example 有一个来自那本书的具体例子。 Compiling C to 32-bit assembly with GCC doesn't match a book 是另一本书,但详细介绍了现代 GCC 所做而旧 GCC 没有做的奇怪事情。 (例如,main 中的堆栈对齐,PIE
__x86.get_pc_thunk.bx因为 32 位不适合与位置无关的代码。)