본문 바로가기

레지스터

범용레지스터 [Reversing] 범용레지스터에는 여러 종류가 있습니다. 산술논리 범용레지스터 : EAX, EBX, ECX, EDX 인덱스 주소 레지스터 : EDI, ESI 포인터 주소 레지스터 : EBP, ESP, EIP EAX : 산술 논리 연산값을 저장합니다. 'E'가 붙어있으므로 32bit 이고 AX는 16bit 입니다. 'E'는 'Extended'의 약자이며 2배 큰 크기를 의미합니다. EBX : 주소값을 저장하는 레지스터입니다. ECX : 반복 카운터 즉, LOOP 명령 사용시 ECX의 카운터 값이 -1 되며 반복되고 0이 되면 반복을 멈춥니다. EDX : EAX에서 연산후 넘치거나 나눗셈을 했을 때 몫과 나머지를 나눠야 할 때 EDX로 넘어가게 되고 FLAG 레지스터의 flag값을 확인하여 EAX의 연산값이 넘쳤는지 잦은 확.. 더보기
Flag 레지스터 [Reversing] Flag 레지스터는 test, cmp 명령을 통해 즉, 조건문을 통과한 후 조건에 따른 참 거짓을 보여주는 레지스터입니다. 단순히 맞다 틀리다가 아닌 '어떤 상황이다.'를 알려주기 때문에 Flag 레지스터를 확인하는 것은 중요합니다. - 각각의 Flag의 의미는 다음과 같다. ZF : 비교 연산과정 후 두 값이 같으면 즉, 두 값을 뺏을 때 0이 되면 같다는 의미로 '1'로 셋트 된다. PF : 비교 연산 후 하위 1byte 중 1bit가 짝수 이면 '1' 홀수 이면 '0'으로 셋트된다. AF : 산술 논리 연산 후 하위 3bit에 올림 또는 내림이 발생할 경우 '1'로 셋트된다. OF : 산술 논리 연산 후 결과값이 넘칠 경우 '1'로 셋트된다. SF : 비교 후 최상위 비트가 0이면 양수 1이면 음수.. 더보기