사진에서 "MessageBoxA" 함수를 볼 수 있는데 이 함수는 메시지 박스를 띄워주는 함수이다. 아래부분에는 "Ok, I really think that your HD is a CD-ROM! :p"라는 문자열을 볼 수 있는데 딱봐도 성공했을 때 나타날 문자열임을 알 수 있다.문제에서 GetDriveTypeA의 리턴값을 구하라고 했기 때문에 "GetDriveTypeA" 함수를 호출하고 난 후의 번지에 BP를 걸어서 리턴값을 확인하도록 하자
프로그램을 실행시키면 BP를 걸어둔 주소에서 실행이 멈추게 된다. 그리고 레지스터값을 확인하면 EAX값이 3으로 변한 것을 알 수 있다 다시말해 "GetDriveTypeA" 함수의 리턴값은 3이다
F8을 누르면서 분석하다가 여기에 오면 EAX와 ESI값을 비교해서 같으면 분기가 일어나는 조건문을 볼 수 있다. 분기되는 주소값을 보니 성공메시지를 띄워주는 곳으로 이동하는 것을 알 수 있다 즉, 분기가 되도록 수정해야 한다.위 사진을 보면 EAX는 2번 감소하고, ESI는 3번 증가하는 것을 알 수 있다
ESI, EAX가 변하기 전 값, 변한 후 값이다.
EAX가 ESI보다 1 작으므로 처음 리턴값 3에서 +1해서 리턴값을 4로 바꿔주면 성공 메시지가 출력된다