Reversing&Write up/Study

[HandRay] 핸드레이와 레지스터

Jubil 2018. 1. 9. 21:10
반응형

프로그램의 제작 원리

.c -> [compile] -> .obj -> [link] -> .exe


디컴파일 : .exe -> .c  실행 파일을 디버거로 돌려서 소스코드로 복원하는 것.

핸드레이 : 디컴파일을 손으로 하는 것.


ALU. 연산 장치. 전기적인 신호를 흘려보내서 연산을 진행하는 회로.

I/O Unit. 모니터, 키보드 등 외부적인 부분과 통신을 위한 회로. 회로를 버스라고 부름.

Register. CPU의 임시 변수. 매우 빠름.

Control Unit. 현재 PC 상태, 다음에 어떤 연산을 해야할지. 연산의 결과를 알 수 있음.


General Purpose Register (범용 레지스터) : 고루고루 쓰이는 레지스터.

  • EAX : 연산의 결과를 저장, AX (16bit), AH(8bit), AL(8bit)로 나눌 수 있음. 함수의 리턴값을 저장

  • EBX : 주소 연산할 때 자주 사용.

  • ECX : 연산의 횟수를 지정해줄 때 자주 사용함.

  • EDX : EAX의 보조역할. ex) 나누기 몫 EAX, 나머지 EDX에 저장. 연산값이 4byte를 넘어가면 EDX에 저장.

  • ESI, EDI : 문자열에 관련된 레지스터. 배열을 참조할 때, ESI에는 주소, EDI에는 인덱스를 지정.

  • EBP, ESP : 주소값에 관련된 레지스터. 스택에서 쓰임.


Instruction Register : 다음 명령을 기억하는 레지스터.

  • EIP : EIP에 다음에 실행할 명령어의 주소가 들어가있다.


Eflags Register : 컴퓨터의 연산 상태를 알 수 있는 레지스터. bit마다 역할이 다름.

  • ZF : 연산의 결과가 0인가 아닌가를 판단. 등등.


반응형