본문 바로가기

Reversing/리버싱 기초 지식2

[ Stack ] Stack & Stack Frame | 스택이란 무엇일까? Stack? - 메모리의 일부분으로 LIFO(Last Input First Output) 방식으로 동작하는 자료 구조. 스택은 PUSH 와 POP 이라는 동작을 지원하는데, PUSH는 데이터를 스택에 넣는 명령어를 뜻하고, POP은 데이터를 스택에서 꺼내는 명령어입니다. 보통 데이터가 들어가면 들어갈수록 데이터의 주소가 증가한다고 착각하기 쉬운데, 스택은 데이터가 들어가면 들어갈수록 데이터의 주소가 감소합니다. 따라서 PUSH를 하면 스택의 주소는 4바이트만큼 감소하면서 데이터는 스택에 쌓이고, POP을 하면 스택의 주소는 4바이트만큼 증가하면서 데이터가 꺼내집니다. 스택에 데이터가 들어갈수록 주소값이 작아지게 설계된 이유는 스택 구조 위에 있는 데이터가 Kernel과 관련이 있기 때문에 그렇습니다. 운.. 2020. 4. 19.
[ Register ] 범용 레지스터 종류 & 범용 레지스터 역할 레지스터? CPU 내부에서 사용되는 고속의 기억 장치. CPU는 연산을 위해 메모리에 있는 데이터들을 레지스터로 옮깁니다. 연산을 하는 도중에도 연산 결과를 레지스터에 저장합니다. 인텔 x86 CPU 에서는 9개의 범용 레지스터를 제공하고 있습니다. 오늘 포스팅은 그 9개의 범용레지스터의 종류와, 각각의 레지스터가 어떤 임무를 부여받았는지에 대한 포스팅입니다. 레지스터 종류 EAX (Extended Accumulator Register) - 산술 연산 레지스터로, 곱셈과 나눗셈 명령에서 사용하고 함수의 return 값을 저장합니다. EBX (Extended Base Register) - 산술 연산 레지스터로, ESI나 EDI와 합쳐져 인덱스에 사용됩니다. ECX (Extended Counter Regis.. 2020. 4. 19.