문제는 풀었는데 의문점?이 있네요

ida로 헥스레이 써서 정적분석으로 풀때랑 x64dbg로 어셈블리로 풀때랑 사용자입력값에 대한 연산방식이 다르더라고요 ;;
ida에서 헥스레이 쓸때는 연산이
이렇게 되는 반면에 어셈블리어를 이용해서 식을 적어보니 (사용자입력값 <<4 and f0) | (사용자입력값 >> 4) 이렇게 나오더라고요 제꺼에는 뜬금없이 16을 곱하고 시프트연산과 and연산이없어서
다른분들 연산에는 &F0가 추가가 되어있네요 그리고 어셈블리로 분석할땐 16을 곱하는게 전혀없고 왼쪽 4 시프트 에 0xF0을 and연산하네요 헥스레이가 이상한건가요 ? ㅠㅠ ida로 계산하니 플래그가 이상하게 나오고 x64디버거로 식을 적어서 풀었을땐 플래그가 맞았습니다 .. 요악 ida에서 and 0xF0연산과 <<4연산이 없는이유와 뜬금없이 곱하기 16이 나오는 이유가 궁금합니다

#reversing
작성자 정보
답변 1
avatar
Sechack
CTF First Place

왼쪽으로 비트를 4번 미는건 16을 곱하는것과 동치입니다. 그리고 & 0xf0도 사실 생략해도 되는 연산이에요. 왼쪽으로 시프트 4번하면 하위 4비트는 모두 0이 될수밖에 없으니까 & 0xf0을 하던 안하던 결과는 같습니다. 결론은 ida가 최적화해서 보여준겁니다.

2023.05.07. 15:11
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기