main: leal 4(%esp), %ecx andl $-16, %esp pushl -4(%ecx)
메인 함수 첫 호출 부분에 위와 같은 코드 3줄을 모르겠습니다 ㅡㅡ;
%esp + 4 에 도대체 뭐가 있는것이죠?
음. 혹시 argc 가 아닐지. ----------------------- 과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라. 그리고 내일을 알고 싶으냐? 그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동 "만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
예전에 봤던 기억이 나는 군요...
Redhat 계열에서 그렇게 나오는 걸로 알고 있구요.. 다른 배포판은 어떤지 모르겠습니다. 본지가 워낙 오래되서.. ^^;;
스택 오버플로우 공격을 예방하기 위한 Moving Stack이라는 기법(이름은 정확하지가 않네요)입니다.
위와 같이 했을 경우 main 함수에서 return하기 위한 주소와 로컬 변수로 사용하기 위한 공간 사이에 16byte 내에서 몇 바이트가 될지 모르는 공간이 생기게 되져..
그렇게 해서 return address의 offset을 runtime 마다 변경하기 위한 코드 입니다.
자세한 내용은 StackOverflow 관련 자료를 찾아보시면 자세히 알 수 있으실 껍니다.
음. 혹시 argc 가
음. 혹시 argc 가 아닐지.
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
뭐가 있을지 모르기 때문에 그렇게 쓰는 겁니다.. ^^;
예전에 봤던 기억이 나는 군요...
Redhat 계열에서 그렇게 나오는 걸로 알고 있구요.. 다른 배포판은 어떤지 모르겠습니다. 본지가 워낙 오래되서.. ^^;;
스택 오버플로우 공격을 예방하기 위한 Moving Stack이라는 기법(이름은 정확하지가 않네요)입니다.
위와 같이 했을 경우 main 함수에서 return하기 위한 주소와 로컬 변수로 사용하기 위한 공간 사이에 16byte 내에서 몇 바이트가 될지 모르는 공간이 생기게 되져..
그렇게 해서 return address의 offset을 runtime 마다 변경하기 위한 코드 입니다.
자세한 내용은 StackOverflow 관련 자료를 찾아보시면 자세히 알 수 있으실 껍니다.