22018, 1/1101 회원가입  로그인  
   tjsansrl89
   제목_없음.jpg (0 Byte), Download : 421     [오른쪽 버튼 눌러 다운 받기]
   리버싱 MP3변환기 프로그램 질문입니다.

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



문자"A"를 25000개 입력하고 그 뒤에 값을 백트랙을 이용해서 무작위패턴값을 5000개 넣었습니다.
그리고 실행을 하다보니 eip위치가 패턴값에서 1109번째 위치하길래 26109개의 A를 생성해서
넣었더니 eip값은 306c4239로 나타납니다.
제가 물어보고자 하는 것은 스택에서 A문자는 하위주소부터 채워져 나가 패턴문자가 점점 상위로 올라가는
형태인데 사진에서와 같이 eip가 패턴문자값을 가지는데 보통 ret명령어는 스택에서 pop을 하고 eip에 집어
넣지 않습니까..패턴문자 이하에 있는 "A"도 pop을 했을텐데 왜 스택에 남아있는 것일까요??

  Hit : 9077     Date : 2013/12/26 11:52



    
cd80 질문내용을 정확히 이해하진 못해서 pop을 한뒤 데이터가 남아있는 이유를 말씀드리자면
pop은 데이터를 지우고 레지스터에 값을 넣는게 아니라
AT&T문법 기준으로
mov (%esp), %reg
add $0x4, %esp 이기 때문에
pop을 하는걸로 esp가 가르키고 있던 데이터가 지워지진 않습니다
2013/12/26  
tjsansrl89 아....스택은 다른데이터를 덮어씌우는 형식으로 저장을 하는군요??
지우지 않고... 오히려 지우지 않고 덮어씌우는 형식이 동작속도나 불필요한 행동의 억제(?)의이윤이 있겠네요..
답변 고맙다 성우야.ㅋㅋㅋ-문기(Ultimate)-
2013/12/26  
cd80 아 문기형이셨군요 ㅋㅋㅋㅋ 2013/12/26  
rubiya 으잉ㅋㅋㅋㅋㅋㅋㅋ 2013/12/26