주로 산술연산(ADD,SUB,XOR,OR등) 명령어에서 상수/변수 값의 저장 용도로 많이 사용 되며, 어떤 어셈블리 명령어(MUL,DIV,LODS 등)들은 특정 레지스터를 직접 조작하기도 합니다. ECX는 반복문 명령어(LOOP)에서 반복 카운트(loop count)로 사용되며 (루프를 돌 떄 마다 ECX를 1씩 감소) EAX는 일반적으로 함수 리턴 값에 사용 됩니다.

 

EAX : Accumulator for operands and results data

EBX : Pointer to data in the DS segment

ECX : Counter for string and loop operations

EDX : I/O pointer

 

EBP : Pointer to data on the stack(in the SS segment)

함수가 호출 되었을 때 ESP를 저장하고 있다가 함수 리턴 직전 ESP에 값을 전달 하여 스택 유지

ESI : source pointer for string operations

EDI : destination pointer for string operations

ESP : Stack Pointer (in the SS segment)

스택 메모리 주소(PUSH,POP,CALL,RET 등의 명령어가 직접조작)

Zero Flag(ZF) 연산 명령 후 값이 0이 되면 ZF가 1(True)로 세팅

Overflow Flag(OF) 부호 있는 수의 오버플로가 발생했을 때 1로 세팅 MSB(Most Significant Bit)가 변경 되었을 때 1로 세팅

Carry Flag(CF) 부호없는 수의 오버플로가 발생했을 때 1로 세팅

EIP : Instruction pointer CPUT가 처리할 명령어의 주소를 나타내는 레지스터 ㅈEIP에 저장된 메모리 주소의 명령어를 하나 처리하고 난 후 자동으로 그 명령어 길이 만큼 EIP를 증가 시킨다.

반응형

'Information Security > Reverse Engineering' 카테고리의 다른 글

어셈블리 명령어  (0) 2014.09.15
Odbg 기본 사용법  (0) 2014.09.15