시스템 해킹

 1576, 1/79 회원가입  로그인  
   hjt7942
   [초보] 리턴어드레스 질문입니다

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=1673 [복사]


여기는 왜 그림 못올리나요 ㅠ
사진은 밑에 주소에 있습니다. ㅠㅠ

http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_Reversing&no=58 [복사]




시스템네트워킹 리눅스 기초편에 리턴어드레스가 저장되는 메모리 위치때문에 글을 올립니다..
운영체제 윈7 (64bit)
컴파일러 비주얼 스튜디오 2010

질문 1. 왜 int형(4바이트) 자료를 동시에 선언했는데
메모리 주소의 차이가 4바이트가 아닌 6바이트 인가요?
(강의내에서는 동시에 선언하면 4바이트 주소값이 차이가 나던데 왜
저는 6바이트차이가 나는 건가요? 나머지 2바이트에 다른무엇인가가 들어가는건가요?)

질문 2. 리턴어드레스 값 또한 12바이트가 아니라 16바이트를 먹는데 왜그런가요?
그리고 제가 리턴 어드레스값 근처값들을 검색해보앗는데... 되돌아갈 라인주소값을 찾을수가 없습니다..ㅠㅠ

(공부한 내용대로라면 0043FA38에 리턴어드레스 위치값이 있어야되는데 그렇지가않네요;.. 왜그런가요?)

꼭 좀 알려주세요 ㅠㅠ

  Hit : 3431     Date : 2013/05/19 08:30



    
별빛을담아 6바이트가 아니라 8바이트일겁니다.
32비트를 기준으로 int는 4바이트이지만 64비트가 되면 그 크기가 2배로 늘어나게 되어 8바이트가 됩니다.
즉 32바이트와 64바이트는 주소체계부터 메모리 할당량 자체가 차이나기 때문에
현재 해커스쿨 강의나 기타 자료와 함께 비교하시면 많은 부분이 혼동을 일으킬 수 있습니다.

또한 새로운 버전의 컴파일러와 OS일수록 각종 공격에 대한 대비책의 일환으로
dummy라던가 DEP라던가 RandomStack 등등 각종 보호기법에 따라
실제 할당량보다 많이 할당되기도 하고 매번 할당되는 메모리도 바뀌는 등
소스코드로 짠 것에 비해 많이 달라지기도 합니다.

이러한 문제 때문에 처음 Stack에 접하시는 분들은 FTZ에서 차근차근 익혀가시는게 좋습니다.
FTZ가 가장 공부하기 좋다고는 장담할 수는 없지만 가장 공부하기 편하다고는 말할 수 있습니다.
2013/05/21