본문 바로가기

취약점 분석/tip

shift 연산으로 원하는 값 만들기 팁

반응형

shift 크기를 내가 마음대로 결정할 수 있는 경우가 있다.

shift 연산이야 그냥 하면 되는데 왜 이런 글을 썼을까?

 

32비트 기준으로 맨오른쪽에 있는 비트 1이 맨왼쪽끝으로 오려면 shl 31 할 때이다.

즉 shl 32 부터는 32비트 레지스터에 담겨있던 기존의 모든 값이 shift 연산으로 날아간다.

그래서 0이 되는 것이 아닌가? 했는데 결과가 그렇지 않아서 의문이 생겼다.

 

x86 guide에 따르면 다음과 같다.

“shifts counts of greater than 31 are performed modulo 32”

 

따라서

mov eax, 1

shl eax, 89

결과는 0x200이 된다.

반응형

'취약점 분석 > tip' 카테고리의 다른 글

immunity debugger 가젯 검색 팁  (0) 2020.01.05
wcscpy  (0) 2019.03.06