1. 문제
1) 문제확인
- 실행 시 왼쪽 창, 틀린 값 입력 시 오른쪽 창
2. 접근방법
패킹되어 있지는 않아서 아이다에 올려서 확인해보고 디버깅을 통해서 시리얼 값을 확인해보자
3. 문제풀이
GetVolumeInformationA()를 통해 VolumeNameBuffer에 지정된 드라이브의 이름을 가져온다.
그리고 VolumeNameBuffer의 값이 어떠한 작업을 거쳐 조금씩 수정되고 사용자의 입력 값이 저장된 String값과 비교하여 분기한다.
GetVolumeInformationA()호출 이후에 VolumeNameBuffer(0x40225c)에 현재 C드라이브의 이름인 "로컬 디스크"가 저장되어 있다.
문제에서는 C드라이브의 이름이 "CodeEngn"일 경우 어떻게 변하는지 알아보라고 했으니 값을 수정해보자
수정완료
strcmp()직전까지 어떠한 과정을 수행하면 Serial값을 얻을 수 있다.
Serial값 : "L2C-5781EqfgEngn4562-ABEX"
그리고 0x40225C를 보면 "CodeEngn"문자열이 변한 것을 알 수 있다.
Serial값이 답인 줄 알았으니 문제를 다시보니 "CodeEngn"이 어떻게 변한 건지 알아보는 거랬으니 0x40225C부터 8byte까지가 플래그 값이다.
Uploaded by Notion2Tistory v1.1.0