보안

CodeEngn Basic01 풀이

벌게진눈 2013. 8. 29. 03:42
반응형


Basic 01 문제이다. 

하드를 시디롬으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가??? 라는 문제이다. 한번 실행시켜 보도록 하자



처음 실행시키면 뜨는 화면이다. 확인을 누르면


이런 화면이 출력된다.





이 사진은 올리디버거를 사용한뒤 사진이다.


표시한 부분을 보면 앞줄에서 EAX와 ESI를 비교한후에 둘의 값이 같다면 

뒤의 주소로 바로 점프하려라라는 뜻이다.


그러나 F8로 하나씩 내려와보면 EAX는 1 ESi 는 2가 되어 값이 다르므로 점프를 하지않고 실패구문이 나온다.


그러면 해결방법은 두가지

값의 같도록 맞추던지 아니면 비교부분을 같지 않으면 혹은 무조건 점프를 하게 바꾸는 방법이다.


두번째 방법은 JE 부분을 JMP로 바로 바꾸어주면 된다. 그러나 이 문제에서 알고 싶은것은 GetDriveA의 리턴값이다. 


그럼 다시 처음으로 돌아가 F8로 한줄씩 나아가보자. GetDriveA가 나온 다음 EAX가 3으로 변하는것을 볼수 잇다. 그러면 우리는 리턴값이 EAX에 저장되는구나라고 추측할수도있다.


그렇다면 EAX의 값을 4로 고쳐주면 파란색으로 표시해둔 비교구문에서 EAX와 ESI의 값은 모두 2가 되므로 바로 점프하게된다. 


올리디버거 팁

Ctrl+F2  - >  재시작

F8  - > 한줄씩 실행

F9  -> 실행


반응형

'보안' 카테고리의 다른 글

PE 파일 자료들  (0) 2013.08.30
CodeEngn Basic02 공부  (0) 2013.08.29
8/29일 다시 시작  (0) 2013.08.29
ebp와 esp 레지스터  (2) 2013.08.28
EnCase 에 대해서 - 주식회사 제트코 펌  (0) 2013.08.28