
문제 음악 파일을 열고 재생시킬 수 있는 프로그램이다. 다운로드할 때 같이 딸려온 ReadMe파일을 보면 1분 미리듣기만 제공하는 프로그램이며 1분 재생을 검사하는 루틴을 다 우회하면 플래그를 획득할 수 있다고 합니다. 시작 아무 음악파일 실행시킨 결과 1분만 재생되고 그 이후부터는 해당 메시지 박스가 뜹니다. 그러면 일단 디버깅툴에서 문자열 참조를 통해 해당 박스를 생성하는 부분을 찾아주겠습니다. 위 코드가 메세지 박스를 띄워주는 코드입니다. 1분 미리 듣기를 '검사'하는 것이니까 분기문이 있을 거라 생각하고 위로 올라가 보면 [ jl music_player.4045FE ] 분기문이 보인다. 스페이스바를 눌러 jl을 jmp로 패치하여 해당 분기문을 검사 없이 그냥 넘어가버리도록 만들어주자. 파일을 수정..

문제 이렇게 낙서가 가능한 조그마한 창이 나온다. Check를 누르면 Wrong이라고 나오면서 종료가 된다. 그렇다면 Wrong이 나오지 않는 그림을 찾아야하는것 같다. 근데 비트단위일텐데 그게 가능할까...? 일단 해보자 시작 x32 dbg를 이용해서 실행시켜보면 일단 EntryPoint는 현재 이 부분이다. 이제 아까 발견했던 Wrong를 찾기위해 문자열 참조를 해보자 디버깅을 해보면서 주석을 좀 써놨는데 &MessageBoxA를 통해서 Wrong메세지 박스를 띄우므로 이전에 정답을 검사하는 부분이 있을것이라고 생각하였다. 때문에 위로 올려보면 GetDIBits라는 함수가 실행되는것이 보인다. 이 함수가 무었인지 하니.. 얾.... 대충 해석해보면 지정된 호환 비트맵의 비트를 검색하고 지정된 형식을 ..