문제를 풀고 나서 코드엔진 사이트로 들어간 후 문제를 다시 보니
HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가
이런 말이 적혀 있는걸 지금 봤습니다...
즉, 내가 한 것은 메모리만 조작해서 cd 롬으로 인식 되게는 만들었는데, cd 롬이 되기 위해선 리턴 값이 무엇으로 되어야 하는지는 몰랐다는 이야기인거죠.
그래서? 다시 리버싱 해보기로 했습니다.
이번엔 IDA를 이용해볼거예요
다른 리버싱 툴을 사용해보진 않았지만, IDA가 저렇게 이쁘게 나오니까 보기 쉬워진 것 같습니다.
각설하고 저흰 이 부분을 유심있게 지켜볼 예정입니다.
이 부분에서 GetDriveTypeA라는 함수가 실행되는 것을 관찰할 수 있었습니다.
break point를 걸고 return value를 확인해 보겠습니다.
eax(함수의 리턴값을 반환) 레지스터에 3이라는 값이 적혀 있는 것을 확인할 수 있었습니다.
즉, cd 롬의 리턴 값은 5이고, 제 pc의 리턴 값은 3으로 측정 된 후에 esi 값과 eax값이 살짝 변동되고 esi와 eax를 비교하는 구문으로 넘어가는 방향으로 프로그램이 진행되었긴 한데
여기서 의문인건 cd 롬으로 인식되기 위해선 비교 레지스터의 값이 5여야 하는 것 아닌가.. 했는데 이 부분은 잘 모르겠습니다
어찌 되었든 코드엔진에 결과를 제출하면 끝