리버스엔지니어링 문제 Advance 2

2015. 4. 17. 10:04Security ★ Development/Reversing

반응형

http://codeengn.com/challenges/advance/02


키를 찾는 문제입니다.

키가 String으로 들어있나 찾아봤지만 그럴듯한건 없습니다.  프로그램을 한번 돌려보면 맞지 않는 키일 경우 그냥 종료되는 것 같습니다.

디버깅을 한만한 근거를 잡기 위해 살펴보면 Enter Password: 라는 문자열이 보입니다.  문자열을 입력해주기 직전에 bp위치로서 적절할 것 같습니다.  그 후 흐름을 보기 위해 CALL마다 bp를 걸어줍니다. 그럼 004012D2에서 문자열을 입력받기위해 block되어 있다는 것을 알 수 있습니다.  아무 문자열이나 입력한 경우 004013C5 밑으로는 더이상 코드가 진행되지 않습니다.  해당 CALL을 살펴봅니다.


비교와 점프문이 많습니다.  대략 정답으로 추측 할 수 있지만 좀 더 살펴보면 JNE점프문들은 0018F88A 위치로 점프합니다.  그리고 그 아래에 있는 CALL ECX는 ExitProcess를 호출하고 있습니다.  그럼 해당 위치로 점프하지 않도록 하는 루트를 답으로 생각할 수 있습니다.

비교문에 맞는 값들을 넣어줘봅니다.  문자열로 CRAAACKED! 입니다.