보안

ebp와 esp 레지스터

벌게진눈 2013. 8. 28. 15:33
반응형

ESP - Stack pointer register


ESP 레지스터는 스택의 크기를 조정할때 사용되는 레지스터입니다. 스택의 최상단주소값을 가지고있으니 즉 스택의 크기를 나타냅니다. 어셈블리어의 PUSH 즉 스택에 값을넣는 동작을 할 때 ESP 가 4 만큼 줄어듭니다. 왜냐면 값을 넣으니 메모리공간을 늘려주어야 겠죠 그것이 4를 줄이는 이유입니다.그런데 늘리지 않고 줄인다는것에 대해 자료구조 공부를 안하신분들은 의문을 가질수 있습니다. 줄이는이유는 스택의 제일아래 부분이 높은주소를 가지고 갈수록 낮은 주소를 가집니다.

그러니까 빼주어야합니다. 반대로 증감시키면 스택의 크기가 감소합니다.


EBP - Base pointer register


EBP 레지스터는 스택프레임 형태로 저장된 함수의 지역변수 , 전달인자를 참조하거나 값을 바꾸거나 할때 사용하는 레지스터입니다. ESP 레지스터로 참조할수는 있지만 어셈블리 코드를 유지하기 힘듭니다. 왜냐하면 EBP 는 고정적이지만 ESP 는 PUSH , POP ,SUB , CALL 명령을 수행할때마다 변하기 때문에 매번 수정해줘야하는 반면 EBP 레지스터를 이용하면 코드유지를 하기 수월해집니다. 스택프레임이 생성될때마다 스택프레임의 바닥만

가리켜주면 되기때문에 지역변수나 인자에 참조하기 수월합니다.


esp는 왔다갔다 유동적으로 계속 변하며

ebp는 딱 기준을 잡아주는 버팀목 

반응형

'보안' 카테고리의 다른 글

CodeEngn Basic01 풀이  (0) 2013.08.29
8/29일 다시 시작  (0) 2013.08.29
EnCase 에 대해서 - 주식회사 제트코 펌  (0) 2013.08.28
디지털 포렌식  (0) 2013.08.28
해커스쿨 트레이닝 6~10  (0) 2013.08.28