BLOG main image
분류 전체보기 (17)
Life (2)
Dump Analysis (9)
Reversing (1)
Windows (1)
Book (2)
Reference (2)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
'2015/01/23'에 해당되는 글 2건
2015. 1. 23. 00:14





조엘 아저씨 책인데, 무엇보다 훌륭한 번역에 감탄했다.

수시로 조엘과 연락하며 의미를 명확하게 하고 조엘스러운 어투를 최대한 살리려 했다는 사실만으로도 구매할 가치는 충분하다.

개발자의 관점에서 관리자, 기획자, 사업가의 관점까지 어투는 가볍지만 깊은 통찰력으로 아우른다.

Microsoft 를 포함한 여러 회사를 거친 경험 덕인지 두 권의 책에 다양한 주제의 이야기를 풀어 놓았다.

해묵은 논쟁거리인 헝가리언 표기법이나 엑셀에 1904 날짜 체계 사용 옵션이 있는 이유 등 읽을 거리가 많다.


'Book' 카테고리의 다른 글

[리뷰] 대체 뭐가 문제야  (0) 2015.01.24
2015. 1. 23. 00:11

참고로, 아래 블로그를 먼저 읽고 오면 좋다.

※ StartService 시 ERROR_FILE_NOT_FOUND(2) 가 발생하는 경우
    http://thepassion.tistory.com/30 


일단 이런 상황을 만나면 당황하기 마련이다.


디버깅을 해보니 ERROR_FILE_NOT_FOUND 케이스와 동일하게 DriverEntry 에서 IoCreateDevice() 호출시 ERROR_ALREADY_EXISTS 에러를 리턴하고 있었다.

하지만, Unload 루틴에서 IoDeleteDevice() 를 호출하는 부분에서는 문제가 없었다.

즉, 드라이버에 대해 정상적으로 StopService() 가 호출되었음에도 어떤 이유로 언로드되지 못하고 메모리 상에 남아 있어 다음 StartService() 호출시 ERROR_ALREADY_EXISTS 에러로 실패하는 케이스다.

1) 처음 MyDrv.sys 로드에는 성공한다.

2) 어떤 이유로 시스템이 비정상적인 상황이 된다.

3) MyDrv.sys 를 언로드한다.

4) 서비스 매니저(SCM)에는 MyDrv.sys 의 서비스 상태가 "Stopped"(sc query MyDrv)로 변경된다.
    하지만, 실제 메모리 상에는 언로드 대기 상태로 남아있다.
    ※ MyDrv.sys 의 DeviceObject 를 확인해보면 상태 플래그에 DOE_UNLOAD_PENDING 이 확인된다.

5) 이후 MyDrv.sys 에 대한 로드는 IoCreateDevie() 에서 ERROR_ALREADY_EXISTS 에러로 실패한다.



결론부터 말하면 외부의 비정상적인 영향에 의한 것으로 MyDrv.sys 의 잘못은 아니었다.

이제 궁금한건 그 어떤 이유일 것이다.

다음 덤프 분석글은 해당 원인을 분석한 것이다.

http://www.paullabsoft.com/3

prev"" #1 next