리버싱/리버싱 입문

리버싱 입문 4장 리버싱 좀더 깊숙이 128~139쪽

상세 2021. 3. 23. 00:13

1.콜 스택

프로그램에서 사용하는 서브루틴에 대한 정보를 저장하기 위한 자료구조.

사용하는 주 목적은 서브루틴 간 호출 순서를 추적할 수 있는 정보를 저장하는 것.

 

예) 서브루틴 호출 순서가 A -> B -> C일때 서브루틴 C가 종료됐을때

B가 어디로 되돌아가서 다시 동작을 계속해야 할지에 대한 정보를 콜 스택에 저장한다.

 

서브루틴 A가 명령어 6까지 있다고 가정할때 3까지 실행 후 서브루틴 B를 호출

-> 서브루틴 B가 저장된 위치로 가서 서브루틴 B의 명령어인 명령어 1 ~ 명령어 3까지 순서대로 수행하고

다시 서브루틴 A로 돌아옴 -> 복귀 주소는 서브루틴 B의 호출 명령어 다음인 명령어 4임 (자세한건 133쪽 참고)

복귀주소는 스택이라는  자료구조에 넣어두고 B의 동작이 완료후 사용해서 복귀2.

 

2. 콜 스택에 있는 것들

서브루틴을 호출할때 필요한 인수, 사용하는 지역 변수