문제를 다운받아서 실행시켜보면 숫자값만 입력받을 수 있는것을 알수있다.
디버거 붙여놓은 다음 아무 숫자나 입력을 해보면
MOV [EAX], 90 명령을 실행할때 잘못된 주소를 참조하여 오류가 발생한다.
여러차례 값을 넣어가며 관찰하다보면
0x601605cb + 내가넣은 숫자 10진수 값이 eax에 들어있게 된다.
우선 적당히 참조가능한 스택의 주소로 대략 0x0012fa20 쯤이 EAX에 들어갈 수 있도록 계산해주고,
아까 에러가 발생한 곳에 브레이크 포인트를 걸어놓으면 이번에는 프로그램이 계속 진행되는것을 볼 수 있다.
해당 함수를 빠저나간 뒤에 보면 jmp가 하나 더 있는대 왠지 여기를 점프하면 안될것 같아보인다.
그래서 nop으로 처리한뒤에 실행해보니 Correct!가 나오는것을 볼수있다.
그렇다면 정상적으로 이 점프문을 없애야 하는대
아까 MOV [EAX], 90 을 보면 [EAX]는 내가 원하는 주소로 만들수 있었고, 90은 NOP이기때문에
값을 잘 계산해서 해당 점프문을 NOPNOP으로 패치해주면된다.
※계산기 두들기다 화남
'prob > reversing.kr' 카테고리의 다른 글
[Reversing.kr] Direct3D_FPS (0) | 2015.11.11 |
---|---|
[Reversing.kr] Position (0) | 2015.11.05 |
[Reversing.kr] imageprc (0) | 2015.11.05 |
댓글