"黑客剥削艺术" - 集会不一致

Ace*_*Ace 1 assembly gcc gdb

我正在学习"黑客攻击艺术".我试图遵循代码示例,但由于某种原因,汇编代码与我实际的linux上的汇编代码不匹配(在虚拟盒上作为Guest运行).我已经确定我已经安装了32位Linux操作系统.有没有我可以传递给gcc的args,它允许我将代码编译成一个与书中给出的内容紧密匹配的程序集?

我会很好地协调书中的代码差异和我看到的如果它们是次要的,但我看到的差别是鲜明的.我不知道如何从"预配置的孵化器环境"运行代码,因为这会抑制我的技能发展.

小智 8

我实际上是在同一条船上 - 在过去的一两周里,我尝试了很多方法在我的正常开发环境(LMDE)中生成类似的汇编代码,包括chroot,使用-m32标志进行编译,安装一个x86 ubuntu等,并没有真正起作用.今天我找到了http://www.nostarch.com/hackingCD.htm,我按照说明操作,并能够在vmware工作站10中启动livecd.这就是我所做的:

  1. 从上面的链接下载iso(虽然它也应该与livecd一起使用)
  2. 创建.vmx文件并从链接复制并粘贴配置
  3. 我拿出了定义cdrom设备的部分,因为我使用的是iso
  4. 使用VmWare Workstation打开文件 - 如果您使用的是iso,请转到"编辑VM设置"并设置cdrom设备并将其指向iso
  5. VM启动没有任何问题

我知道这不像你在主OS /系统中的示例那样方便,并且你试图避免使用LiveCD,但经过大量的研究后我发现这是一个非常常见的问题,希望这个答案有助于某人.使用LiveCD可能并不理想,但它仍然比双启动要好得多.


Emp*_*ian 5

出于某种原因,汇编代码与我实际的 linux 上的代码不匹配

最可能的原因是这本书出版于 2008 年,并且使用了当时稳定的 GCC(您可以在此处查看 GCC 发布历史)。

您现在使用的 GCC 可能要更新得多,因此会生成显着不同(并且希望更好)的代码。

是否有任何参数可以传递给 gcc,让我将代码编译成与书中给出的程序集紧密匹配的程序集?

不可以。您可以尝试编译和安装 2008 年的版本,可能是 4.2.3 或 4.3.0,然后检查是否可以提供更接近的输出。

PS 看起来这本书的第一版是 2003 年的,作者不太可能在 2008 年为第二版重建所有示例,所以也许试试 GCC 3.3?