본문 바로가기

해킹, 보안/리버싱

[Immunity Debugger] reversing.kr 1번 Easy Crack 문제 풀이

프로그램의 비밀번호를 맞추는 문제이다.

Immunity Debugger를 통해 동적으로 분석하였다.

 

Immunity Debugger에서 EasyCrack.exe를 열어준다.

 

 

마우스 오른쪽 클릭 -> Search for -> All referenced text strings

 

 

여기서 이 프로그램의 모든 스트링들을 볼 수 있다.

딱 봐도 Congratulation !! 이 제일 수상해 보인다.

더블 클릭해서 저 위치로 들어가 본다.

 

 

아직은 별로 나온 게 없다. 

함수의 시작부분으로 가본다.

 

 

GetDlgItemTextA 함수를 호출하는 게 보이고,

어디에 쓰이는지 모를 문자열들이 보인다.

 

 

함수가 시작되는 곳에 bp를 걸고, 

한 줄씩 실행시켜본다.

 

esp + 5 위치에 있는 값과 61을 비교한다고 쓰여있다.

esp + 5 위치를 찾아가 본다.

 

 

나는 분명히 TEST라 적었는데 처음 부분인 T가 아닌 E부터 비교한다.

esp + 5가 61인지 확인하는 구문을 봤으니 대충 esp + 5가 61이라고 추측할 수 있고,

esp + 5는 입력된 값의 두 번째 자리인 거 까지 추측할 수 있다.

61은 아스키코드로 a이다.

 

두 번째 자리에 a를 넣어주고 실행

 

 

점프 구간을 지났다. a가 맞나 보다.

ecx에 esp + A에 있는 값을 옮긴다고 쓰여있다.

ecx 레지스터를 확인해본다.

 

 

내가 입력했던 st가 들어왔다.

대충 세 번째 네 번째가 5y인지 확인하는 구문 같다.

 

 

 ■a5y■ 이라고 추측할 수 있다.

다시 입력 후 실행

점프 구간을 지났다.

 

 

이번엔 또 수상한 아스키코드다.

eax에 esp + 10 주소 복사 후 비교하는 구문이다.

 

 

esp + 10에 내가 입력했던 zzzz가 보인다.

 

 

갑자기 반복문이 나오는데,

확인해보니 문자열 비교 구문이다. 

문자열이 R3versing 일 때를 검사하니까,

대충 ■a5yR3versing이라고 생각할 수 있다.

 

 

마지막 비교 구문이다.

esp + 4 위치의 값과 45를 비교한다고 쓰여있다.

 

 

esp + 4 위치는 첫 번째 자리였다.

그러므로 첫번째 자리는 45를 아스키코드로 변환한 E이다.

 

 

정답 : Ea5yR3versing