codeengn basic 19번 문제다. 파일부터 실행 해 보자. 저렇게 프로그램이 실행되고 어느정도 시간이 지나면 프로그램이 종료된다. 이제 패킹 확인후 파일부터 열어보자. 언패킹 후 파일을 실행해보니 실행이 안된다.
먼저 최초로 timeGetTime 함수가 실행되면 EAX에 반환된 프로그램 실행시작 값을 ESI에 저장시켜 놓는다. 그 후 CALL EDI를 통해 timeGetTIme 함수를 호출할 수 있기 떄문에 두번째로 실행시킨 함수의 값으로 최초시간과 비교를한다. 두번째로 호출된 함수는 항상 최초 시작값인 ESI값보다 클수밖에 없기 때문에 점프를 하여 다음 사진의 위치로 간다. 다음과 같이 점프해서 오면 EAX에는 두번째로 호출됬을때 시간값이 담겨있고 이를 최초값과 SUB한다. |
'Wargame > CodeEngn' 카테고리의 다른 글
code engn advance 1번 (0) | 2018.02.04 |
---|---|
code engn basic 20번 (0) | 2018.02.04 |
code engn basic 18번 (0) | 2018.02.04 |
code engn basic 17번 (0) | 2018.02.04 |
code engn basic 16번 (0) | 2018.02.04 |