본문 바로가기

Reversing

(2)
[정리] 레지스터 레지스터(Register)란 CPU 내부에 존재하는 다목적 저장 공간이다. 우리가 일반적으로 메모리라고 생각하는 RAM과는 조금 다르다. CPU가 RAM에 있는 데이터를 엑세스하기 위해서는 물리적으로 먼 길을 돌아가야 하지만 레지스터는 CPU와 한 몸이기 때문에 고속으로 데이터를 처리할 수 있다. □ 범용 레지스터 : 범용 레지스터(General Purpose Registers)는 이름처럼 범용적으로 사용되는 레지스터들이다. 보통은 상수/주소 등을 저장할 때 주로 사용되며, 특정 어셈블리 명령어에서는 특정 레지스터를 조작 하기도 한다. 산술 연산 레지스터 ▷ EAX (Accumulation) - 산술연산에 사용되는 레지스터이다. - 함수의 리턴값에 사용된다. ▷ EBX (Base Register) - 간..
[정리] 어셈블리어 어셈블리어는 리버스 엔지니어링을 하기 위한 가장 기초적인 프로그래밍 언어이다. 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어이다. 특징은 기계어 1라인당 어셈블리 명령어가 대부분 1라인씩 대응되어 있고 이를 비교적 간단하게 짤 수 있는 어셈블러를 통해 기계어로 변환되도록 한것이다. 어셈블리어는 2개 인자를 사용하는 명령어와 인자가 없는 명령어로 나뉜다. 2개의 인자를 사용하는 대표적인 명령어로는 ADD, SUB, AND와 같이 연산하는 명령어들이 있고 인자없이 사용 가능한 대표적인 명령어는 RET이 있다. 지금부터 어셈블리어에 대해 설명해보겠다. □ PUSH : (push XXX) XXX 값을 스택에 넣는다. □ POP : (pop XXX) XXX 값을 스택에서 꺼내온다. □ MOV : (m..