해커스쿨.Section 17 Section 17 스택에 저장되는 값들 살펴보기 변수가 스택에 어떻게 저장되는지 살펴보기 위해 아래와 같은 코드를 살펴보자 a -> b -> c-> d 순서로 변수를 선언했기 때문에 a부터 스택에 쌓일것이다. 아래 결과를 살펴보자 예상했던 대로 가장 먼저 선언한 a의 값인 1이 가장 높은 주소에 저장되어있는 것을 확인할 수 있다. 이번에는 int형이 아닌 자료형이 선언될 때 어떻게 선언되는지 살펴보자 우선 1바이트의 크기를 가진 char형을 선언한 코드는 아래와 같다. 결과를 보면 4바이트 할당되어있고, 7이란 값이 들어가 있기는 하다 그러나 07 앞에있는 eb 83 04는 무엇일까? 우리가 프로그래밍을 하다보면 초기화를 안하고 사용하는 경우가 있다 이러한 변수에 값을 넣지 않은채로 출력하게 되면 이상.. Study/system 7년 전
함수의 호출 : 스택 프레임과 규약 그리고 프롤로그&에필로그 스택 프레임이란? 함수가 호출되었을 때 해당 함수가 가지는 공간 구조를 말한다 스택 프레임의 구조 LIFO 구조로 쌓이며 괄호로 이야기 하면 더 쉬울것 같다 [ { ( [ [ ] ] ) } ] 이처럼 좌우 대칭이 되는 구조라고 생각하면 될것 같다 개략적으로 나타내면 push func_one()push func_two()pop func_two()pop func_one() 위와 같고 실제로 어셈블리어에서는 다음과 같은 구조를 띈다 push ebp ---> 현재 ebp를 스택에 저장해놓는다mov ebp, esp ---> ebp를 최상단으로 옮긴다 . . . ---> 새로운 함수의 내용 mov esp, ebp ---> esp값을 복원(위의 코드엔 없음)pop ebp ---> 저장해놓았던 ebp값을 복원ret -.. Study/reversing 8년 전