문제입니다.

파일을 실행하니 이와 같은 메시지 박스가 출력됩니다.

PEID로 패킹 여부를 확인해보니 패킹은 되어 있지 않습니다.

MASM란 Microsoft Macro Assembler 란 뜻으로 MS 에서 무료로 제공해 주는 어셈블러입니다.

TASM란 터보 어셈블러로 Borland 제품입니다.

올리디버거를 통해 어떤 api를 사용하는지 확인해보겠습니다.

[Search for] -> [All intermodular calls] 클릭

GetVolumeInformationA 라는 함수가 눈에 띄는데 MSDN을 통해 어떤 기능을 하는지 확인해보겠습니다.

총 8개의 인자를 사용하며 lpVolumeNameBuffer 이 부분이 드라이브 볼륨명이 주소의 포인터를 저장하는 매개변수입니다.

그럼 드라이브 명을 "CodeEngn"으로 변경해 보겠습니다.

이제 드라이브 볼륨명을 얻어내는 부분에 break point를 걸고 "CodeEngn"이 어떻게 변경되는지 F8을 눌러가면서 확인해보겠습니다.

401092 부분이 볼륨명이 저장된 메모리 주소의 포인터를 하는 매개변수이므로 CALL이후 덤프창에서 ctrl+g 를 통해 40225C 입력하여 "CodeEngn"문자열의 변화를 살펴보면 될 것 같습니다.

"40225C"에 "CodeEngn"문자열이 저장된 것을 확인할 수 있습니다.

반복문을 지나게 되면 "4010CF"까지 F8을 눌러 실행을 하다보면 "CodeEngn"의 문자열이 하나씩 바뀌는 것을 확인할 수 있습니다.

"EqfqEngn" 으로 바뀌었습니다.

이후 위와 같은 lstrcmplA라는 함수를 만나는데 "L2C-5781EqfgEngn4562-ABEX"이 문자열과 "내가 입력한 값"을 인자로 준 후 비교한 결과에 따라 성공과 실패의 분기로 빠지는 구간을 확인할 수 있었습니다.

입력값에 "L2C-5781EqfgEngn4562-ABEX" 넣어 확인해보겠습니다.

올바른 시리얼이네요 ~

문제는 "CodeEngn"이 어떤 문자열로 변하는지를 확인하는 것이므로 정답은

"EqfgEngn" 입니다!

Basic RCE L07 성공!

'WAR GAME > CodeEngn(Basic)' 카테고리의 다른 글

Basic RCE L09  (2) 2020.04.29
Basic RCE L08  (2) 2020.04.29
Basic RCE L06  (2) 2020.04.29
Basic RCE L05  (2) 2020.04.29
Basic RCE L04  (2) 2020.04.29

+ Recent posts