Адрес возврата переполнения буфера имеет 00

Я просто пытался заставить переполнение буфера работать в OSX (10.6) в следующей программе; Мне нужно заставить foo выполнить переполнение буфера.

#include <string.h>
#include <stdio.h>
void foo() {
    printf("hacked!");
}
int main(int argc, const char *argv[]) {
    char s[100];
    strcpy(s, argv[1]);
}

Я компилирую его как: -

$ gcc -o test test.c -arch i386

При дизассемблировании test я получаю адрес foo как 0x00001eda . Эксплойт не работает должным образом; вероятно, потому что адрес возврата должен быть переполнен 0x00001eda , содержащим \ x00 .

В случаях, когда целевой адрес имеет \ x00 , как можно использовать эксплойт переполнения буфера?

5
задан Evan M 4 April 2011 в 22:44
поделиться