문제:컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 'ß어떤것'으로 변경되는가
일단 문제를 실행시켜보겠습니다.
시리얼을 입력하는 칸이 있는데 아무 문자열이나 넣고 Check 버튼을 눌러보겠습니다.
그랬더니 당연하게도 Error!창이 뜹니다.
Ollydbg로 열기 전에 PEiD로 열어보겠습니다.
패킹은 되어있지 않고 MASM32와 TASM32라는 어셈블러로 만들어진 프로그램임을 확인할 수 있습니다.
이제 Ollydbg로 분석해보겠습니다.
문자열 검색 기능을 통해서 쉽게 중요한 부분을 찾아버렸습니다.
GetDlgItemTextA함수를 통해서 입력한 문자열을 받아옵니다.
그리고 GetVolumeInformationA함수를 통해서 C 드라이브의 이름을 가져옵니다.
이제부터 본격적으로 시리얼을 만들게됩니다.
lstrcatA함수가 나오는데 이 함수는 두 문자열을 하나로 합치는 역할을 합니다.
이 경우에는 "4562-ABEX"라는 문자열과 GetVolumeInformationA함수를 이용해서 가져온
C 드라이브의 이름을 합치게 됩니다.
lstrcatA함수를 거치고 나면 "4562-ABEX"와 C 드라이브의 이름인 "CodeEngn"이 합쳐지게 됩니다.
이 코드를 해석해보면 DL에 2를 넣어서 카운터로 쓰고
합쳐진 문자열인 "CodeEngn4562-ABEX"의 앞 4글자에 1을 더하는 코드를 2번 반복하게 됩니다.
Code"부분이 "Eqfg"로 바뀐 것을 확인할 수 있습니다.
코드를 계속 실행시키면 "L2C-5781"과 "EqfgEngn4562-ABEX"가 합쳐져서
"L2C-5781EqfgEngn4562-ABEX"라는 문자열이 만들어지고,
이 문자열과 입력받은 시리얼을 LstrcmpA함수로 비교해서 같으면 성공메시지가 출력되는 구조입니다.
답:L2C-5781EqfgEngn4562-ABEX
'CodeEngn Write Up > Basic' 카테고리의 다른 글
CodeEngn Basic RCE L09 Write Up (1) | 2022.01.05 |
---|---|
CodeEngn Basic RCE L08 Write Up (1) | 2021.10.05 |
CodeEngn Basic RCE L06 Write Up (0) | 2021.09.29 |
CodeEngn Basic RCE L05 Write Up (0) | 2021.09.23 |
CodeEngn Basic RCE L04 Write Up (0) | 2021.09.16 |