보안공부/etc

리버싱) 레지스터의 비트 마스크 요약

아이띠불로구 2024. 6. 20. 11:11

비트 마스크는 원하는 비트를 1로, 다른 비트를 0으로 만들어주는 값으로, 특정 비트를 추출하거나 설정하는 데 유용합니다. 각 레지스터의 비트 마스크는 다음과 같습니다:

8비트 레지스터 (al, ah, bl, bh, cl, ch, dl, dh)

  • al (하위 8비트): 0xff (모든 비트가 1)
  • ah (상위 8비트): 0xff00 (상위 8비트를 제외한 나머지 비트는 0)

예)

예) 

16비트 레지스터 (ax, bx, cx, dx, si, di, sp, bp, ip)

  • ax: 0xffff (모든 비트가 1)
  • bx: 0xffff (모든 비트가 1)
  • cx: 0xffff (모든 비트가 1)
  • dx: 0xffff (모든 비트가 1)
  • si, di, sp, bp: 0xffff (모든 비트가 1)
  • ip: 0xffff (모든 비트가 1)

예) 

32비트 레지스터 (eax, ebx, ecx, edx, esi, edi, esp, ebp, eip)

  • eax: 0xffffffff (모든 비트가 1)
  • ebx: 0xffffffff (모든 비트가 1)
  • ecx: 0xffffffff (모든 비트가 1)
  • edx: 0xffffffff (모든 비트가 1)
  • esi, edi, esp, ebp: 0xffffffff (모든 비트가 1)
  • eip: 0xffffffff (모든 비트가 1)

예) rax=0x123456789abcdef0 일 때, eax=0x9abcdef0

64비트 레지스터 (rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp, rip)

  • rax: 0xffffffffffffffff (모든 비트가 1)
  • rbx: 0xffffffffffffffff (모든 비트가 1)
  • rcx: 0xffffffffffffffff (모든 비트가 1)
  • rdx: 0xffffffffffffffff (모든 비트가 1)
  • rsi, rdi, rsp, rbp: 0xffffffffffffffff (모든 비트가 1)
  • rip: 0xffffffffffffffff (모든 비트가 1)

예) rax=0x123456789abcdef0 일 때, rax=0x123456789abcdef0