我跟随黑客攻击:剥削艺术和他们的课程,我遇到了障碍。
当我尝试编译他们正在使用的相同代码时,我的程序将编译到相当不同的地址,这使我很难跟进。
例如,对于相同的代码:
#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。