티스토리 뷰

Reversing/ETC

[Reversing] 레지스터 관련 정리

정짱 정뚱띵 2020. 6. 18. 15:38

[Reversing] 레지스터 관련 정리


정리가 필요하여 메모한다.(개인정리)


레지스터 크기

E 문자가 붙으면 32비트

R 문자가 붙으면 64비트


RAX 64비트

EAX 32비트

AX 16비트

AH/AL 8비트


소프트웨어 레지스터

범용레지스터

논리, 산술 연산등에 사용되나 디버깅 시 유기적으로 사용하는 것 같다.

AX, BX, CX, DX, SP, BP, SI, DI


세그먼트 레지스터

코드, 데이터, 스택등의 주소를 가리키며, FS의 경우 TEB 주소를 지정하는데 사용된다.

SS, CS, DS, ES, FS ,GS


플래그 레지스터

디버깅 시 관련된 플래그들이 존재하며 JMP 명령어 즉, 해당 플래그에 따라 분기가 달라진다.

예를 들어 CMP ESI, 2 비교 시 ESI가 “2”라면 제로 플래그가 “1”이지만, ESI가 “2”가 아니기 때문에 “0”으로 바뀐다. 

이후 SETE AL(SET if equal)는 제로 플래그가 참이면 바이트 레지스터를 “1”로 설정한다. 

하지만 현재 제로 플래그는 “0”으로 AL 레지스터(EAX의 하위 1바이트)는 “1”로 설정이 되지 않는다

CF, PF, AF, ZF, SF, TF, IF, DF, OF


하드웨어 레지스터

제어 레지스터

해당 레지스터는 프로세스 제어 관련 레지스터로 추후 분석 시 관련 내용을 찾으면 추가 정리하겠다.

CR0, CR2, CR3, CR4, CR8


디버그 레지스터

해당 레지스터는 예전 분석시 하드웨어 브레이크 포인트 관련하여 https://jeongzzang.com/101 본적이 있다.

DR0 ~ 0R3

DR6, DR7

댓글
«   2020/07   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Total
147,594
Today
1