완료됨
메모리 산술연산 도중 음수 결과값

산술연산시에 메모리 주소내의 값이 음수로 변환된다면 어떻게 표시되나요?

#리버싱 #배경지식
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
avatar
믕믕이부하
대표 업적 없음

음수를 표기하는 방법에는 여러가지 있는데 대표적으로 오버플로우 방식이 쓰입니다.

예를 들어 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와 같은 바이너리 공격을 수행할 수도 있습니다.

2022.01.25. 17:43