Code Engine basic 7
C드라이브의 볼륨 명을 참조 해, 최종적으로 변경되는 시리얼 킷값을 구하는 것이 목표이다. 우선 C드라이브의 이름을 CodeEngn으로 바꾼 후 프로그램을 실행시켜 봅시다.
입력한 시리얼값이 옳지 않다고 뜹니다.
파일을 열어보겠습니다.
일단 오류메세지박스가 뜨는 부분을 먼저 살펴봅시다.
004010FC를 보게 되면 EAX – 0의 값이 0이 나올 경우 JE를 실행하고 성공 창이 뜨게 되도록 설정되어있습니다.
즉 EAX – 0 = 0이 되어야 참이 된다는 소리입니다. 참이 됐을 경우 JE를 통해 00401117로 JMUP를 하게 됩니다. 00401117은 성공박스가 뜨는 곳이지요. 즉 EAX가 0이 되게 만들어 주어야합니다. 일단 CMP함수에 break를 걸고 실행시켜 봅시다.
보면 EAX의 값이 1이 되어있습니다. EAX가 1이기 때문에 JE를 실행하지 않고 Error창이 뜨게 된 것입니다.
코드를 위로 올려 조금 더 살펴봅시다.
위의 함수를 보면 이상한 문구가 있습니다. 바로 Enter your serial라는 문구입니다. 이 문구는 이전에
파일을 실행하자 마자 보였던 문구이지요.
그리고 그 밑에 시리얼 키로 보이는 L2C-5781EqfgEngn4562-ABEX가 있습니다.
또 위에 함수를 보게 되면 StringToAdd라는 함수가 있습니다. StringToAdd라는 함수는 ‘문자를 추가한다’라는 뜻과 같습니다.
즉 EqfgEngn4652-ABEX + L2C-5781을 추가한 것과 같습니다.
그런데 EqfgEnge4652-ABEX는 어디서 온 것일까요? 일단 문자열을 전부 보도록 합시다.
오른쪽 마우스 -> Search for -> All referenced text strings
을 클릭해서 모든 문자를 보도록 합시다.
EgfgEnge4562-ABEX가 보인다. 더블클릭해서 들어가 봅시다.
4562-ABEX가 EqfgEnge에 추가되었습니다.
EqfgEngn은 아까 문제를 풀기 전 C드라이브에 이름을 바꾼 CodeEngn이 뭔가 변형되어서 나타난 것 같습니다.
앞서 문제에서 시리얼이 생성될 때 CodeEngn이 바뀐다 했으므로 시리얼처럼 보이는 L2C-5781EqfgEngn4562-ABEX를 넣어봅시다.
시리얼 키인 L2C-5781EqfgEngn4562-ABEX를 넣어보면 성공창이 뜹니다.
그리고 생성될 때 CodeEngn의 값이 바뀐다고 하였으니 바뀐 값은 EqfgEngn이 맞습니다.