abcdef
CodeEngn Basic - (1) 본문
먼저 실행파일을 받은 뒤 한번 실행시켜 봅니다.
이런 두 Message창이 뜨게 됩니다.
이번 01문제의 목표는 저 Error창을 성공창으로 바꾸는 것 입니다.
먼저 올리디버거로 01실행파일을 엽니다. 그리고 00401000주소로 가줍니다. (대부분의 main함수는 다 주소가 00401000입니다) 밑에 MessageBoxA가 두개가 보이네요. GetDriveTypeA함수까지 간 뒤
BP(F2) 브레이크 포인트를 걸어주고 그곳까지 실행시켜줍니다.
GetDriveTypeA에 함수의 반환 값은 3입니다. (함수의 반환 값은 EAX레지스터에 저장됩니다) 이제 밑에 알고리즘을 해석해 봅니다.
00401024주소와 00401026주소의 코드를 주목해 주세요.
CMP EAX, ESI – 만약 EAX와 ESI를 비교했을 때
JE SHORT REVERSE_.0040103D – 두 값이 같다면 0040103D주소로 점프하여라.
라는 뜻이 됩니다.
결국 EAX값과 ESI값이 같아야 성공 실행창이 나온다는 얘기입니다.
하지만 그렇게 머리를 굴릴 필요없이
EAX보다 ESI값이 훤저히 크기 때문에 JE(두 값이 같다면)를 JB(뒷 값이 더 크다면)으로 바꾸어 준다면 바로 성공창으로 넘어갈 수 있을 것입니다.
JE코드를 더블클릭하여
코드를 바꾸어 주고 실행(F9)을 하면
성공창이 뜨게 됩니다.
'IT 독학 > CodeEngn' 카테고리의 다른 글
CodeEngn Basic - (6) (0) | 2018.08.11 |
---|---|
CodeEngn Basic - (5) (0) | 2018.08.11 |
CodeEngn Basic - (4) (0) | 2018.08.11 |
CodeEngn Basic - (3) (0) | 2018.08.11 |
CodeEngn Basic - (2) (0) | 2018.08.11 |