리버스 엔지니어링

리버싱kr easy_crackme 풀이 1

Injel me 2020. 7. 1. 18:47
두어 번 풀었던 거지만 reversing.kr 아이디를 까먹어서 다시 만들고
블로그에 작성하는 김에 다시 풀어본다.

가장 첫 번째 문제인 easy crackme를 실행시켜 보았다.
텍스트를 칠 수 있는 공간과 확인 버튼이 있다. 123을 치고 확인을 눌러보면

이렇게 틀렸다고 나온다. 비밀번호를 맞춰야 한다.

이번엔 디버깅 등을 올리디버거가 아닌 x64dbg를 사용해 보려 한다.
x64dbg에도 익숙해져야 하기 때문에.


실행 시킨 x64dbg를 attach해서 바로 창을 띄웠다.
상단 바에 모듈이 ntdll.dll로 되어 있는데, 보기-Modules에서 easy_crackme.exe모듈로 바꿨다.


여기서 시작부분 근처에 바로 DialogBoxParamA함수를 호출하는 것을 볼 수 있다.


DialogBoxParamA함수와 EndDialog함수가 보이는 것을 보니 저 사이에 아마도 버튼을 눌렀을 때의 행동을 하는 이벤트를 가져와 처리하는 함수를 호출하는 곳이 있을 것이다.

이 함수 같은데, 여기서 bp를 걸고 123을 넣어 실행해 보겠다.

여기서 멈추는데, 과연 맞는지는 모르겠다. 따라가보자.

이것저것 있는 곳으로 왔다. 대충 훓어보기 위해 내려보는데
버튼을 눌렀을 때 틀렸다고 나오는 메세지가 적혀있는 곳이 나온다.


Congratulation과 Incorrect Password가 나열되어 있는 것을 보니 저 중간에 분기문이 있을 것 같다. 그럼 call된 이 주소는 버튼을 눌렀을 때의 리스너라고 생각하면 될 것 같다.