코드엔진 베이직 7번 문제 : c드라이브의 이름이 CodeEngn일 경우 생성되는 시리얼에서 CodeEngn이 변한 것 알아오기.
우선 다운받은 파일을 그냥 실행시켜봅시다.
건들지말고 그냥 Check를 눌러보니
짠!
틀렸을 때와 아무 것도 입력하지 않았을 때 나타나는 문자열을 알게됐으니 올리디버거로 열어봅시다.
문자열을 찾아봐야겠죠?
[Search for]->[마우스 우클릭]->[All referenced text strings]
바로 찾았네요! 더블클릭해서 들어가봅시다.
에러문과 성공문이 뜨는 부분의 위 쪽을 보니 CMP명령어가 있네요.
CMP명령어로 EAX의 값과 0을 비교하는 것 같아요.
CMP부분에 BP를 걸고 실행시켜봅시다.
EAX가 1 이네요. 0으로 바꿔서 실행시켜보면,
이렇게 시리얼이 맞다고 뜹니다.
그럼 윗 부분의 코드를 살펴볼까요?
코드를 살펴봅시다.
GetVolumeInformationA 함수의 역할부터 알아봐야겠죠?
무언가 값을 가져와서 메모리에 PUSH하길래 C드라이브의 이름을 CodeEngn으로 설정해보았습니다. (원래는 설정되어있지 않았습니다.)
띠용..?
CodeEngn 이 EqfgEngn으로 바뀌어있네요..
왜지 하고 코드를 살펴보니
이 부분에서 메모리주소 40225C ~40225F 의 값을 1씩 증가시키는 걸 두 번 반복합니다.
그래서 40225C~40225F 의 값을 찾아보니,
CodeEngn 의 Code부분이네요.
다음 코드를 살펴보면,
시리얼이 생성되어있네요!
최종적으로 설명하자면, C드라이브의 이름을 GetVolumeInformationA 함수가 순서대로 40225C ~ n 에 넣은 후 메모리의 40225C~40225F 부분에 있는 문자만 아스키 코드의 값을 +1씩 두 번 반복합니다. 그래서 C드라이브의 이름인 CodeEngn 이 EqfgEngn 이 됩니다.
그 후 만들어진 문자의 앞쪽에는 L2C-5781, 뒤쪽에는 4562-ABEX 를 붙여 최종 시리얼인
L2C-5781EqfgEngn4562-ABEX 가 만들어집니다.
그럼 구해낸 시리얼을 확인해볼까요?
맞다고 뜨네요! 그럼 이번 문제의 답은 L2C-5781EqfgEngn4562-ABEX에서 선으로 그어진 부분이겠네요!
확인해봅시다.
잘 넘어가네요! ㅎ0ㅎ 오늘도 모두 화이팅이요~~
'Security > CodeEngn' 카테고리의 다른 글
CodeEngn_basic_09 (0) | 2018.12.10 |
---|---|
CodeEngn_Basic_08 (0) | 2018.08.21 |
CodeEngn_Basic_06 (0) | 2018.08.12 |
CodeEngn_Basic_05 (0) | 2018.08.09 |
CodeEngn_Basic_04 (0) | 2018.08.07 |