이 문제 역시 입력을 받고 맞으면 correct 틀리면 wrong을 출력해주는 문제이다.

 

검증하는 부분을 살펴보면 

 

참고한 사이트를 보고 정리해보면..

ROL과 ROR은 어셈블리어에서 시프트 연산을 맞는다.

ROR은 오른쪽으로 시프트연산을 하고 ROL은 왼쪽으로 시프트 연산을 한다.

비트회전은 비트를 잃어버리지 않는다. 한쪽 끝에서 회전되어 나온 비트는 다른 한쪽 끝에서 다시 나타난다.

ROL operand1 operand2이면 operand1을 왼쪽으로 operand2만큼 민다. 비트가 넘치면 그 뒤로 받는다.

ROR은 오른쪽으로 민다.

 

MOVZX와 MOVSX명령어

-MOV명령어는 목적지의 피연산자의 길이는 원시 피연산자의 길이와 반드시 일치해야 된다. 바이트는 바이트로 워드는 워드로 전송해야 된다.

MOVZX와 MOVSX명령어는 바이트나 워드의 원시 피연산자를 워드나 더블워드의 목적지 피연산자로 데이터를 전송하는것을 가능하게 해준다.

 

MOVZX

- 부호없는 산술 값에 대해 사용된다.

- 바이트나 워드를 워드나 더블워드 목적지에 전송할수 있다.

- 0비트로 목적지 피연산자의 왼쪽 비트들을 채운다.

 

MOVSX

- 부호있는 산술 값에 대해 사용

- 바이트나 워드를 워드나 더블워드의 목적지에 전송할 수 있다.

- 부호비트(원시 피연산자의 맨 왼쪽비트)로 목적지 피연산자의 왼쪽 비트들을 채운다.

 

movzx

정리하면 하나의 식이 나오는데 (p[i] rol(i&7)^i==e[i]가 나온다...

이것을 계산하기 위해 코드를 짜야 되는데..rol,ror코드를 구현하는 것들이 있다.

FLAG를 찾기 위해 블로그를 참고해서 답을 얻을 수 있었고 코드가 짜여지는것은 더 공부해봐야 될것 같다,,

 

참고

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=hot_tracks&logNo=20157707672

https://sandwichmaker.tistory.com/54

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sol9501&logNo=70091168321

https://s0ngsari.tistory.com/entry/ROL-ROR

+ Recent posts