【发布时间】:2011-11-13 05:00:23
【问题描述】:
我最近买了这本书,书名是:黑客:剥削的艺术(第 2 版),它最近一直困扰着我。无论如何,用一个例子,firstprog.c:
#include <stdio.h>
int main() {
int i;
for(i=0; i < 10; i++) {
// Loop 10 times.
printf("Hello, world!\n"); // put the string to the output. }
return 0; // Tell OS the program exited without errors. }
它让你用 gcc 编译它(显然是 :3 ),然后使用 objdump (为此我只使用了 gobjdump,找不到 OS X 的 objdump)将输出通过管道传输到 grep main.: 作为正则表达式并显示前 20 行。然后用 gdb 调试并在 main 处中断。 这是我的主要问题:所有的内存地址都不一样!! 比如书中的eip是:0x804837a。但是我的电脑使用 rip 它是:0x100000ee8 我认为这只是因为我使用的是 64 位操作系统,但是当我使用 32 位版本的 Darwin 启动时,我得到了相同的结果。如果有人知道这个问题是什么,我将不胜感激。如果这真的很愚蠢,请让我休息一下,我刚满 14 岁:)
【问题讨论】:
标签: macos debugging memory addressing shellcode