먼저 문제를 확인해보면 C드라이브의 이름이 CodeEngn일 때 생성되는 시리얼 값이 어떤 것으로 변경되는지 알아보는 것이다.

 

 

먼저 실행을 한 후 아무거나 입력해보면 위와 같은 메세지창이 뜨는 것을 확인할 수 있다.

 

 

먼저 C드라이브 이름이 CodeEngn이라고 했으므로 내컴퓨터 C드라이브 이름을 바꾸어준 후에

Immunity Debugger로 실행 파일을 열어 보았다.

어떻게 시작해야할지 몰라 코드를 확인해보다가 위와 같은 부분을 발견할 수 있었다.

004010FC 부분에서 EAX레지스터의 값과 0을 비교하여 시리얼값 정답 여부를 판별해주는 분기문을 볼 수 있었다.

 

 

코드를 실행하다보면 위와 같이 GetVolumeInformationA라는 함수를 발견할 수 있는데 이는 하드디스크의 볼륨값을 불러오는 함수로 이 함수를 통해 내 컴퓨터의 C드라이브 값을 불러온다는 것을 예측할 수 있다.

 

 

위와 같이 004010AD 부분으로 이동한 후 코드를 확인해봤더니 스택의 값을 1씩 더해주는 것을 두 번 반복하는 코드를 확인할 수 있다.

 

 

위에서 봤던 코드를 한줄씩 실행시켰더니 아까와는 다르게 Code 부분이 Eqfg로 바뀐 것을 확인할 수 있다.

 

 

또한 StringToAdd를 실행시켜주면 해당된 문자열을 연결해준 것이 Serial이라는 것을 예측할 수 있다.

004010ED를 보면 알 수 있듯이 내가 입력한 Serial값인 1234와 문자열을 연결한 Serial 값을 비교할 것이다.

 

 

위 부분까지 실행한 후 레지스터 창을 확인해보면 EAX레지스터에 위와 같은 값이 들어가 있는 것을 확인할 수 있고 이 값을 CMP로 비교하여 아까 봤던 분기문을 판단해주는 것이다.

 

 

따라서 다시 실행한 후 위처럼 Serial 값을 입력해주었더니 성공 메세지창이 뜨는 것을 확인할 수 있었다.

 

또한, 문제에서 인증키는 CodeEngn이 변경된 값이었기 때문에 답은 EqfgEngn이 된다.

 

+ Recent posts