우회 자체는 어렵지 않은데 런타임 에러 때문에 삽질을 많이 했던 문제이다. reversing.kr Music Player 풀이 이번 문제는 1분듣기 밖에 안되는 파일의 1분 체크 루틴을 우회해서 1분 이상 실행시키는 문제이다. 1분 이상 실행되면 플래그가 출력된다고 한다. mp3 파일을 넣어보면 1분 듣기 후 아래와 같이 "1분 미리듣기만 가능합니다.'라는 메시지 창이 출력된다. 이번 파일은 비주얼 베이직 (VB) 프로그램이기 때문에 IDA로 디컴파일이 안된다ㅠㅠ 일단 메시지창 함수가 실행된다는 것을 알기 때문에 관련 함수 호출부분을 찾기로 했다. 다행히도 msvbvm60.dll 함수 중 "msg"가 들어간 함수는 rtcMsgBox밖에 없었다. 해당 함수에 bp를 걸고 리턴주소가 저장되는 스택 상단을 보..
[reversing.kr] Easy Unpack 풀이 이번 문제는 실행파일의 OEP를 찾는 문제로 시작은 GetProcAddress 함수 호출로 이루어져 있다. 원래 실시간 바이러스 겁사를 계속 꺼주었다 켜주었다 하는게 귀찮아서 Windows7 가상머신에서 문제를 푸는 편인데 이번 파일은 윈7에서 실행시키니 자꾸 GetProcAddress에서 함수를 못찾고 0을 리턴해서 윈10에서 풀기로 했다. 보통 OEP를 찾기 위한 방법으로 pushad&popad(OEP로 점프하기 전에 처음 레지스터 상태를 스택에 보원해놓고 백업하기 위함)를 찾고 popad 밑에있는 jmp문을 확인하는 방식이 있는데 너무 많다. 많은건 둘째치고 앞에 몇개정도 테스트해봤는데 정상적인 popad 코드가 아니거나 실행 루틴에 포함이 안되..
reversing.kr Easy Keygen 풀이 "Easy Keygen.exe"를 실행시키면 아래와 같이 Name을 입력받고 Serial 값도 입력받는다. 그리고 이번 문제에는 README에 문제가 아예 설명되어 있는데 "Find the Name when the Serial is 5B134977135E7D13" 이다. Name을 사용해서 시리얼값을 생성하는데 역으로 시리얼 값을 주고 맞는 Name을 찾아내는 문제이다. 코드 작성이 필수일 것 같다. 먼저 IDA에서 "Correct!"와 같이 시리얼 생성 함수에서 사용될 것 같은 문자열을 찾은 후 해당 문자열을 호출하는 함수로 가보았다. 이런 시리얼 생성 알고리즘과 관련한 문제는 먼저 헥스레이로 전체적인 구조?를 파악한 후 세부 알고리즘은 어셈으로 하나하..
2017년에 풀기 시작한 reversing.kr 문제들을 여기로 옮기려 하는데, 풀이가 엉망인게 많아서 결국 다시 풀게됐다. 옛날에 Position까지 풀고나서 연구실 일을 하느라 바빠서 풀지 못했는데 Position까지 다 옮기고 나면 간간히 한문제씩 풀어보려고 한다. reversing.kr은 리버싱 워게임 중에서도 난이도가 있는 편에 속하고 심지어 문제도 따로 없이 바이너리만 주어지는 경우도 있기 때문에 문제 의도가 뭔지 알기 힘든 것도 많다. 그래서 소제목도 좀 통일성이 없고 양식을 통일하기도 힘들 것 같아서 크게 신경쓰지 않고 줄글 느낌으로 쓰기로 했다. reversing.kr Easy Crack 풀이 먼저 Easy Crack 파일을 실행시켜 보면, 아래와 같이 어떤 값을 입력받고 있다. 정답 시..