본문 바로가기

[Wargame Write-up]/HellBoundHackers

[HellBoundHackers] [Application Cracking] Application Cracking 15

Application Cracking 15번째 문제이다.


패스워드를 찾는 문제이며, 이제 몇 개 안남았다!




아이콘을 보고 Visual Basic으로 짜여졌음을 단번에 알 수 있고, 


실행해보면 다음과 같이 되어 있다. 1999년부터 만기됐다는 메시지가 나온다.


시스템 날짜를 1999년 이내로 바꾸거나 Ollydbg로 연도 비교 부분에서 비교되는 값을 변조시키면 되겠다.




후자의 방법으로 해보자.


비교 함수인 vbaVarTstGt와 vbaVarTstLe가 마지막 부분에 다음과 같이 호출되는 것을 볼 수 있는데, 각각에 Breakpoint를 걸고 진행해보자.




첫 번째 Breakpoint이다. 729073에서 [LOCAL.16]에 넣는 4C33D4의 값이 UNICODE로 1999임을 볼 수 있는데,




ASCII 영역에서 그 주소로 이동하여 9999로 변조시켰다. 계속 진행하자.




다음 Breakpoint인데, 같은 값과 비교한다. 그냥 진행하면 될 것 같다.




첫 번째 패치에 성공했다. 버튼 2개가 활성화되었다.




여기서 p32dasm을 확인해보자. Form1에 대한 함수는 ??????????????????라고 되어 있어 별 도움이 안됐는데, Form2는 어떤 기능인지 볼 수 있다.


Command1_Click()을 봐서, Form2에도 버튼이 있는 것을 알 수 있다. 주소를 알아두자.




활성화된 버튼 중 Register를 누르면 아래와 같은 Form이 나타난다.


이것이 Form2인 듯 하다. 




10000을 입력해보자.




위의 p32dasm에서 확인한 Command1_Click() 함수 내용을 살펴보면, vbaStrCmp 함수가 있는 것을 볼 수 있는데, 여기에 Breakpoint를 걸고 Form에서 Register 버튼을 눌러 진행해보자.


첫 번째 인자로 EAX를 넣는데, 이것이 정답 serial이다.




입력값이 들어간 부분을 정답 문자열로 변조시키면, 아래와 같은 성공 메시지를 볼 수 있다.




여기까지 끝나면 가장 위 버튼인 Password recovery 버튼이 활성화되는데, 아래와 같은 Form이고


그냥 체크하고 Recover password 버튼을 누르면 된다.




100%까지 올라가면, 아래의 두 MessageBox가 나타난다.


오른편에 있는 것이 인증키이다.


여태 풀었던 Hard 문제 중에 그나마 작업량이 많았던 것 같다.