챌린지/Reversing.kr 5

Challenge - Replace

Reversing.kr의 5번째 문제인 Replace다. 이전 문제인 Music Player보다는 조금 더 푼 사람이 많은데 아마 비주얼 베이직 프로그램이 아니어서 그런지도 모른다. 이번 문제에서는 단순히 문제 파일만 주어지고 어떻게 뭘 하라는 지시가 없어서 좀 헷갈릴 수 있다. 일단 프로그램을 실행시켜보자. 사용자 입력을 받는 텍스트 박스 하나와 Check 버튼, 그리고 Wrong이라는 문자열로 구성된 화면이 나타났다. Wrong 문자열이 있는 부분은 사용자 입력에 아무 반응이 없으며 텍스트 박스에는 숫자만 입력할 수 있다. 일단 아무 값이나 입력한 후 Check 버튼을 눌러보면 어떤 반응도 없이 그대로 프로그램이 종료되는 것을 볼 수 있다. 그런데 뭔가 프로그램이 종료되는 모습이 부드럽지가 않은데, ..

Challenge - Music Player

Reversing.kr의 네 번째 문제인 Music Player다. 이전 Easy 시리즈들과는 달리 푼 사람의 수가 비약적으로 줄어든 것을 볼 수 있다. 아마 여기서부터는 장난은 끝난다는걸 의미하는 것 같기도 하다. 글을 쓰기 전에 먼저 말해둘 것은 나도 이 문제를 풀지 못해서 다른 사람의 풀이를 보고 풀었다는 것이다. Easy 시리즈들을 풀때는 나 혼자의 힘으로 풀 수 있었지만 아직 리버싱 초보인 이상 문제를 푸는 데 한계가 슬슬 다가오는 것인지 바보같이 dll 내부까지 들어가서 로직을 파악하느라 끙끙대는 실수를 저지르고 말았다. 여기서 시간과 에너지를 너무 소모해버려서 결국 힌트를 보고 풀게 되었지만 다시는 엉뚱한 곳을 분석하지 말자는 교훈을 얻을 수 있었다. 어쨌든 이번 챌린지의 목적은 이 음악 재..

Challenge - Easy Unpack

Reversing.kr의 세 번째 문제인 Easy Unpack이다. 이전 문제인 Easy Keygen보다 약간 적은 3000명 정도의 사람들이 푼 문제로 언패킹에 관련된 문제다. 언패킹은 보통 OEP(Original Entry Point)를 찾아서 덤프를 뜨고 IAT를 복구하는 것이 목적인데 언패킹된 파일을 워게임 사이트에 업로드할 수도 없는 노릇이기 때문에 이번 문제에서는 이 프로그램의 OEP를 찾아 사이트에 인증하도록 설명하고 있다. 일단 프로그램을 실행시켜보면 다음과 같은 단순한 창이 뜨는데 뭘 눌러도 아무런 반응이 없기 때문에 정보를 얻어낼 수 없었다. DIE로 확인해보아도 별다른 패커 정보를 찾을 수 없었다. 그렇기때문에 일단 프로그램을 x32dbg로 실행시켜보았다. 0x0040A04B에서 프로..

Challenge - Easy Keygen

Reversing.kr의 두 번째 문제인 Easy Keygen이다. 첫 번째 문제가 6천 명이 풀었던 것에 비하면 좀 줄어들긴 했지만 그래도 Easy라는 이름답게 4천명이나 풀은 문제다. 이번 문제는 설명 파일도 따로 포함되어 있는데 다음과 같다. 즉 시리얼이 5B134977135E7D13인 이름을 찾는 것이 이 문제의 목적이 될 것이다. 우선 키젠 프로그램을 실행시켜서 어떻게 동작하는지 확인해보자. 이번 프로그램은 콘솔 프로그램이기 때문에 명령 프롬프트에서 실행해서 프로그램 종료 후 곧바로 창이 꺼지는 것을 방지했다. 어쨌든 실행시키면 먼저 사용자 입력으로 이름(Name)을 받는다. 일단 아무 문자열이나 입력해보자. 이번에는 시리얼을 입력받고 있다. 아직 이 이름에 어떤 시리얼이 해당되는지 알 수 없기..

Challenge - Easy Crack

Reversing.kr(립케알)에 있는 간단한 크랙미를 풀어보기로 했다. 6000명이 푼 간단한 문제로 아마 Abex 크랙미 정도의 난이도에 해당하지 않을까 싶다. 우선 프로그램을 실행시켜보면 다음과 같이 시리얼을 입력하는 창이 나타난다. 확인 버튼은 항상 활성화되어있으며 시리얼 키를 입력하는 필드에는 별다른 이벤트가 존재하지 않는 것 같다. 아무런 값을 입력하지 않아도 혹은 틀린 시리얼을 입력해도 동일하게 다음과 같은 메시지 박스를 호출하고 있다. 그렇다면 해당 문자열을 기반으로 먼저 찾아보자. 일단 디버거로 파일을 열어보면 다음과 같이 0x00401188에서 진입점을 확인할 수 있다. 초반 부분부터 여러가지 함수를 호출하고 있는데 F8 등 Step Over로 하나하나 실행시키다 보면 머지않은 곳에서 ..