Sanguine 2014. 6. 3. 17:41

방학때부터 리버싱 스킬향상을 위해 reversing.kr을 풀어보았다.

일단 문제파일은 이것이다.

Easy_CrackMe.exe

실행한번 시켜보면,

다음과 같이 간단한 입력을 할수있는 박스가 나온다.

아무 입력값이나 주고 확인버튼을 누르면 다음과 같이 나온다.

exeinfo로 봐서 c++로 작성된듯하고, 간단한문제니, 비교루틴을 찾을수 있을것이다.

IDA에 어테치 해보았다.

일단 패킹은 되어있지 않고,

문자열부터 한번 훑어보았다.


다음과 같이 성공과 실패 문자열을 볼수 있다.

저 성공 글자를 클릭해서 data영역으로 따라들어간다음, xref를 통해서 이 주소를 사용하는 곳으로 이동하였다.

다행히 한곳밖에 없어, 쉽게 문자열 비교루틴을 발견할수 있었다.


디버깅을 통해,

GeDlgItemTextA를 통해 입력한 문자열을 받아오는것을 알 수있으며, 따라가면서 쉽게 비교루틴을 발견할수 있다.

비교 순서는 다음과 같다.


2번째 글자가 a인지 비교 -> 3~4 글자가 5y인지 비교 -> 그 뒤에 글자가 R3versing인지 루프로 비교 

-> 첫번째 글자가 E인지 비교 -> 성공메세지 출력


이런 식이 였다.


그래서 키값은

Ea5yR3versing 이다