목록전체 글 (18)
Study
2. CodeEngn Basic 02 섹션에 대한 이해가 필요한 문제이다.(아마도) 2.1 풀이 과정 파일을 실행시키면 정상적으로 열 수 없다는 메시지가 뜬다. 그렇기 때문에 OllyDbg로는 볼 수 없고 Hex Editor를 이용해야 한다. DOS Header의 시그니처인 MZ는 존재하지만 NT Header의 시그니처인 PE는 찾아볼 수 없다. 그래서 정상적으로 열 수 없는 것이다. 조금 아래에 바로 섹션 헤더가 보인다. 정답은 파일의 키값을 찾는 것인데, 보통 프로그램에 사용되는 문자열은 .data 섹션 또는 .rdata섹션에 있다. ※참고 .data Section - 전역변수, 정적변수가 위치하는 섹션 .rdata Section - Const로 선언된 자료 키값은 수정할 수 없도록 Const로 선언..
1. CodeEngn Basic 01 레지스터의 값을 수정하는 문제이다. 1.1 풀이 과정 파일을 열어보면 프로그램의 흐름을 알 수 있다. 00401024에서 EAX와 ESI의 값을 비교 후 같으면 0040103D로 분기하는 조건문이다. 우선 GetDriveTypeA 함수의 반환값이 무엇인지 실행시켜보자. 함수 실행 후 EAX의 값은 00000003이다. 그다음 조건문 실행 직전의 값은 무엇인지 실행시켜보자. EAX는 00000001로 원래 값에서 2가 감소되었음을 알 수 있다. ESI는 최종적으로 00000003의 값을 가지게 된다. 함수 호출 후 분기문까지 DEC EAX가 두 번 등장하였으니 디버깅을 다시 시작해 GetDriveTypeA의 반환값을 초기값에서 2를 더해준 00000005로 수정해준다...
21. Windows 메시지 후킹 21.1 훅 - 훅(Hook) : 원하는 정보를 엿보거나 가로채는 도구 - 후킹(Hooking) : 실제로 정보를 엿보고 조작하는 행위 21.2 메시지 훅 Windows 운영체제는 GUI를 제공하고, 이는 Event Driven 방식으로 동작한다. 키보드를 입력하고, 마우스를 이용해 버튼 선택, 창 크기 변경, 창 이동 등의 클릭하는 등의 행위는 모두 이벤트이다. 이런 이벤트가 발생할 때 OS는 미리 정의된 메시지를 해당 응용 프로그램으로 통보한다. 응용 프로그램은 해당 메시지를 분석하여 필요한 작업을 진행하는 것이다. [그림 21.1] ① 키보드 입력 이벤트가 발생하면 WM_KEYDOWN 메시지가 [OS message queue]에 추가된다. ② OS는 어느 응용 프로..