저는 Jon Erickson의 훌륭한 책 Hacking을 읽었습니다. 버퍼 오버플로 예제를 컴파일하고 디버깅하려고했지만 할당 된 외부 공간을 작성하는 대신 응용 프로그램이 'Abort trap'으로 응답합니다. Xcode 또는 Mac OS에서 도입 한 보안 예방 조치입니까? 저자는 raw gcc와 Debian을 사용하고 있습니다.버퍼 오버플로 대신 트랩을 중단합니다.
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
int value = 5;
char buffer_one[8], buffer_two[8];
strcpy(buffer_one, "one"); /* put "one" into buffer_one */
strcpy(buffer_two, "two"); /* put "two" into buffer_two */
printf("[BEFORE] buffer_two is at %p and contains \'%s\'\n", buffer_two, buffer_two);
printf("[BEFORE] buffer_one is at %p and contains \'%s\'\n", buffer_one, buffer_one);
printf("[BEFORE] value is at %p and is %d (0x%08x)\n", &value, value, value);
printf("\n[STRCPY] copying %d bytes into buffer_two\n\n", strlen(argv[1]));
strcpy(buffer_two, argv[1]); /* copy first argument into buffer_two */
printf("[AFTER] buffer_two is at %p and contains \'%s\'\n", buffer_two, buffer_two);
printf("[AFTER] buffer_one is at %p and contains \'%s\'\n", buffer_one, buffer_one);
printf("[AFTER] value is at %p and is %d (0x%08x)\n", &value, value, value);
}
에 대한 몇 가지 관련성 주위 구글/조정 했어? :-) –