완료됨
논리연산 not 3번 예제 질문있습니다.
3번 예제에서 not eax연산에 대한 답이 rax = 0xcafebabe인 이유가 무엇인가요?
eax는 32비트 레지스터니까 기존 rax = 0x35014541 에서 하위 32비트인 4541만 not 연산을 진행하여 rax = 0x3501babe 가 되어야 하는게 아닌가요?
#리버싱
#배경지식
작성자 정보
답변
1
Karatus
워게임: 50
eax = 32-bit(4-Byte), 16진수 1자리 = 4-bit, 16진수 2자리 = 8-bit(1-Byte)
즉 0xff가 8-bit 입니다. 그러니까 eax는 16진수 8자리이며 0xffff_ffff입니다.
마찬가지로 0xcafebabe도 eax 크기만큼의 데이터라고 할 수 있죠.
위 예제에서는 처음에 rax라고 써서 표현해놓긴 했지만 사실상 eax 크기의 데이터만을 보여주고 있습니다.
16진수로 표현에 있어 처음에 좀 헷갈릴지는 모르겠습니다만 이렇게 하나하나 쪼개서 보면 보시기 쉬울겁니다.