exe 파일을 실행해보면, 그림판처럼 그림을 그릴 수 있고 Check 버튼을 누를 수 있다.
Check를 누르면 'Wrong'이라는 문자열이 출력된다. 이 문자열을 토대로 함수를 찾았다.
분기점을 분석하면,
ecx에 있는 값과 eax+exc에 있는 값을 비교하는데 한 바이트 씩, 총 90000 바이트가 일치해야한다. 그림을 그리고 90000바이트를 비교하는 함수가 있다? 애초에 비교할 데이터는 저장되어 있고 그림을 그린 데이터와 비교하는 것일 거다. 어떤 데이터와 비교하는지 살펴보니, 0x47e060부터 비교를 한다. 그 data를 export하여서 한 픽셀 씩 출력한다고 생각할 건데, 가로 세로 픽셀 크기를 모른다.
이것을 보고 세로 픽셀 크기를 0x96으로 생각해서 풀어보았다. 바이트 값이 \xff면 '.'을 출력하고, \x00면 '0'을 출력하도록 하였다.
'Writeup [rev] > reversing.kr' 카테고리의 다른 글
Music Player (0) | 2020.03.27 |
---|---|
Replace (0) | 2020.03.27 |
Easy Keygen (0) | 2020.03.26 |
Easy Crack (0) | 2020.03.26 |