为什么我的程序编译为奇怪的地址?

时间:2017-05-16 21:10:43

标签: ubuntu virtualbox c

我跟随黑客攻击:剥削艺术和他们的课程,我遇到了障碍。

当我尝试编译他们正在使用的相同代码时,我的程序将编译到相当不同的地址,这使我很难跟进。

例如,对于相同的代码:

#include <stdio.h>
#include <stdlib.h>

static void cleanup(void) __attribute__ ((destructor));
int main() {
 printf("Some actions happen in the main() function..\n");
 printf("and then when main() exits, the destructor is called..\n");
 exit(0);
}
void cleanup(void) {
 printf("In the cleanup function now..\n");
}

虽然他们的例子显示

reader@hacking:~/booksrc $ nm ./dtors_sample
080495bc d _DYNAMIC
08049688 d _GLOBAL_OFFSET_TABLE_
080484e4 R _IO_stdin_used w _Jv_RegisterClasses
080495a8 d __CTOR_END__
080495a4 d __CTOR_LIST__

080495b4 d __DTOR_END__

080495ac d __DTOR_LIST__
080485a0 r __FRAME_END__
080495b8 d __JCR_END__
080495b8 d __JCR_LIST__

我的节目

0000000000601048 B __bss_start
000000000040059f t cleanup
0000000000601048 b completed.6972
0000000000601038 D __data_start
0000000000601038 W data_start
00000000004004c0 t deregister_tm_clones
0000000000400530 t __do_global_dtors_aux

这使我无法遵循他们的格式字符串漏洞攻击(因为你无法在堆栈中保存0x00),而且与他们相比,我得到了截然不同的结果。< / p>

我的设置有问题吗?我在Windows 10中使用VM(VirtualBox)。我使用的是Ubuntu 14.04.2。

0 个答案:

没有答案