문제확인
파일을 실행할 경우 아래와 같이 틀린 시리얼에 의하여 프로그램이 바로 종료가 된다.
풀이
손쉽게 성공분기점을 찾을 수가 있으며, 이를 통하여 우리는 GetVolumeInformationA 와 lstrcat과 lstrcmp를 볼 수가 있다. 하지만 여기서 중요한 것은 바로 4562-ABEX 밑 부분에 알고리즘이 있다는 것이다. 이 알고리즘은 4562의 숫자를 1씩 총 두번 상승 시키므로 인하여 결국 6784-ABEX가 위치하게 된다.
알고리즘을 거친 문자열은 L2C-5781뒤에 덧붙여 지게 되어 시리얼을 형성하는 것을 볼수가 있다.
여기서 GetVolumeInformationA에서 VolumeNameBuffer의 위치에 바로 드라이브의 이름이 위치하는 것을 볼 수가 있다. 따라서 드라이브의 이름이 CodeEngn일 경우 Code-Engn이 위치하게 되어 앞의 Code부분이 2칸씩 상승하게 되고 그러한 상승이 이루어진뒤에 기존의 문자열에 덧붙여져 이번 문제를 풀 수가 있다.
'Reversing > CodeEngn' 카테고리의 다른 글
CodeEngn Basic 09 (0) | 2015.06.01 |
---|---|
CodeEngn Basic 08 (0) | 2015.06.01 |
CodeEngn Basic 06 (0) | 2015.06.01 |
CodeEngn Basic 05 (0) | 2015.05.31 |
CodeEngn Basic 04 (0) | 2015.05.31 |