본문 바로가기

Reversing/reversing.kr

reversing.kr 1번 Easy Crack 문제풀이

반응형

reversing.kr 1번 Easy Crack 

간단한 PE분석

간단한 Pe분석을 한 내용이다. C++로 개발된 것과 Entry Point와 파일 사이즈 등이 출력되는 것이 나온다.

이후 올리에 붙여서 리버싱을 진행하도록 하겠다.

 

 

reversing.kr 1번 - 1

처음 올리에 Easy Crack.exe 파일을 붙이면 401188 주소에서 함수가 시작되는 모습을 확인할 수 있다. F8을 누르면서 진행을 하다 보면 실행되는 위치를 확인할 수 있다.

 

 

reversing.kr 1번 - 2

401251에서 Easy_cra으로 호출되는 모습이 보인다. 이 부분에서 실행되는 것을 보아 브레이크 포인트를 걸고, F7을 눌러 호출의 안쪽을 확인해봐야할 것으로 보인다.

 

 

reversing.kr 1번 - 3

함수 내부는 분석해야 할 내용이 없어 보인다. F8을 눌러 프로그램을 실행하고 오류내용이 나올 때 콜스택 부분을 확인해보자.

 

 

reversing.kr 1번 - 4

Incorrect Password 스트링이 나오는 것이 보이고, 이 상태에서 프로그램을 멈춘 다음 콜스택 부분을 확인해보자.

 

 

reversing.kr 1번 - 5

멈춤버튼을 클릭한 이후 K버튼을 누르면 콜스택이 확인 가능하다. 내용을 봤을 때 우리가 본 오류가 406030 부분에서 출력되는 것을 확인할 수 있다. 그럼 이 스트링이 어디에 있는지 확인하기 위해 search for -> all referenced text strings로 확인해보자.

 

 

reversing.kr 1번 - 6

아스키코드로 된 스트링에 우리가 찾던 내용이 출력되는 것이 보인다. 먼저 Incorrect Password 부분인 40113C부터

확인해보자.

 

 

reversing.kr 1번 - 7
reversing.kr 1번 - 8

reversing.kr 1번 - 7 은 Password가 맞았을 때 스트링이고 reversing.kr 1번 - 8이 틀렸을 때 스트링임을 확인했다.

위에 코드를 보면서 어떤 분기문을 통해 오게 되고, 어떤 레지스터를 비교하는지 확인해보자.

 

 

reversing.kr 1번 - 9

먼저 첫번쨰 비교 부분이다. ESP에 내용과 61을 비교한다. 이때 61이 아스키코드임을 생각해보면 ESP+5까지의 내용이 ‘a’라는 것을 알 수 있다. Password의 일부 중 ‘a’의 순서는 어디인지 확인하기 위해 브레이크 포인트를 걸고 순서를 찾아보자.

 

 

reversing.kr 1번 - 10

순서를 확인하기 위해 123456을 입력하였고, reversing.kr 1번 - 11 사진과 같이 2번째 요소에서 비교되는 것을 보아서 ‘a’는 2번째 요소라는 것을 우리는 확인하였다.

 

reversing.kr 1번 - 11

이번엔 재시작하여 1a3456을 넣고 분기문을 통과해보자.

 

 

reversing.kr 1번 - 12

문제 안에 ASCII 코드 5y가 있다는 것이 힌트로 나와있다. 그럼 이 5y가 몇 번 요소인지 확인해보자.

 

 

reversing.kr 1번 - 13

먼저 5y가 ECX에 들어간 이후 호출되는 함수 내부 모습이다. 함수를 읽다 보면 우리가 입력한 스트링 중 3456 부분에서

34 부분을 자르는 모습이 확인된다. 

 

 

reversing.kr 1번 - 14

에 박스를 보면 사용자가 지정했던 ‘5’와 우리가 입력한 ‘3’이 비교되는 모습을 볼 수 있다.

따라서 5y는 3, 4번 요소임을 알 수 있다.

 

 

reversing.kr 1번 - 15

이제 다시 시작해서 1a5y6789를 넣어서 이후 Password를 맞춰보자.

 

 

reversing.kr 1번 - 16

이번엔 힌트로 “R3versing”이 나왔다. 

 

 

reversing.kr 1번 - 17

이후 코드를 보면 5번째 요소로 넣은 6부터 반복적으로 R3versing을 비교하는 구문이 나온다. 이를 통해 ‘_a5yR3versing’까지 패스워드를 맞췄다. 다시 시작하여 1번 요소를 맞춰보자.

 

 

reversing.kr 1번 - 18

반복구문을 지나면 마지막 비교 구문이 나온다. 이번 비교구문은 ESP+4까지 45와 비교를 하고 이때 45는 아스키코드로 ‘E’이다. 따라서 Ea5yR3versing이 Password임을 알게 되었다. 맞는지 확인해보자.

 

 

reversing.kr 1번 - 19

우리가 추리한 비밀번호를 입력하니 Password가 일치할 때 나오는 스트링이 출력되는 것을 확인하였다. 이번 문제를 통해

리버싱이 재밌다는 생각을 하게 되었다. Easy Crack이 제목인 만큼 쉬운 편에 속하는 리버싱 문제였지만 뜻깊고 재밌는

시간이었다.

 

 

728x90