완료됨
메모리 산술연산 도중 음수 결과값
산술연산시에 메모리 주소내의 값이 음수로 변환된다면 어떻게 표시되나요?
#리버싱
#배경지식
작성자 정보
답변
1
믕믕이부하
대표 업적 없음
음수를 표기하는 방법에는 여러가지 있는데 대표적으로 오버플로우 방식이 쓰입니다.
예를 들어 8비트 메모리 공간에서 음수를 다음과 같이 표기할 수 있습니다.
00000001(2진수) -> 1
11111111(2진수) -> -1
00000010(2진수) -> 2
11111110(2진수) -> -2
두 수를 더할 경우 100000000이 되고 8비트를 넘어섰기에 마지막 1이 잘려서 00000000(2진수) -> 0이 됩니다.
1 + (-1) = 0
2 + (-2) = 0
이와 같은 방식으로 음수를 표현하기는 하나 데이터 타입에 따라 음수를 표현하지 않는 경우에는 11111111(2진수) -> 255 로 인식하게 됩니다.
이러한 특성을 이용하여 Out Of Bound와 같은 바이너리 공격을 수행할 수도 있습니다.