본문 바로가기

Linux/기타

ebp


alias gcc='gcc -mpreferred-stack-boundary=2'


디버깅하며 매개변수의 개수와 매개변수의 값, 환경변수들을 확인해본다.


먼저 기본적인 test.c를 -g 옵션으로 컴파일을 한 뒤 매개변수로 '-u 10 -d /home/bin Hoyoung' 을 주어 실행시켜보았다.


메모리의 내용을 볼 때 사용하는 x명령어를 사용하여 ebp의 내용을 보면 아래와 같다.


첫번 째 (0xbfffea88) : base pointer 저장( 이전 ebp를 저장)

  이전 ebp가 없기 때문에 값이 없다.


두번 째 (0x0082fe9c) : return addressr값 저장

현재 0x0082fe9c 값이 들어가 있는 주소는 0xbffea2c 이므로 이 주소에다가 원하는 주소값을 넣어 리턴주소를 변경할 수 있다.

세번 째 (0x00000006) : 매개변수 개수

매개변수로 '-u 10 -d /home/bin Hoyoung'을 주었기 때문에 개수는 5개가 되야할 거 같지만 실제 실행할 때 입력하는 './test -u 10 -d /home/bin Hoyoung'의 실행파일명까지 개수를 포함하여 6개가 된다.

네번 째 (0xbfffeab4) : 매개변수 값 

매개변수 값이 들어있는 주소인 0xbfffeab4로부터 10개정도 값을 확인해보면 아래와 같다.

0값이 나오기 전에 6개의 값이 들어있는 것을 확인할 수 있는데 이 값들을 확인해보면 아래와 같이 매개변수의 값을 각각 확인할 수 있다. (첫 번째는 실행파일의 경로)


다섯번 째 (0xbfffead0) : 환경변수 값

각각에 주소에 들어있는 값을 확인해보면 환경변수의 값을 확인할 수 있다.








'Linux > 기타' 카테고리의 다른 글

db 활용  (0) 2015.05.28
어셈블리[if]  (0) 2015.05.26
HDD추가하기  (0) 2015.04.29
JAVA 설치  (0) 2015.04.29
하드링크 & 심볼릭링크  (0) 2015.04.29