Notice
Recent Posts
Recent Comments
Link
- lumenFC 축구 동호회
- 마샤블
- 웍스프레소
- 소셜@나눔<소셜미디어나눔연구소>
- 리버스코어
- LAIN
- LAIN 이사한 블로그
- TeamCR@K
- Sunnyday
- 보안 걱정이
- 리버싱 학습
- securityfirst_jo
- Practical Security Blog
- 세상, 그 유쾌한 전장
- 악성코드관련블로그
- Back to the Mac
- 패킷분석입문
- PacketInside / 네트워크 패킷 분석 블로그
- 침해사고분석 :: 네이버 블로그
- 소프트웨어 기술자경력관리시스템
- JK.Moon
- 자바 온라인학습
- Ezbeat의 도서관
- Dreams of a Final Journey
- IT eBooks - Free Download - Bi…
- Index of /madchat/coding/rever…
- Security Insight
- Reversing war game
- 고길고기
- clamav
- zerowine
- FORENSIC-PROOOF
- jquery 예제
- 조대협의블로그
- 국가과학기술인력개발원 교육포털 사이트
- 빅데이터, splunk
- 지식을 연주하는 사람
- malware analysis system
- 건국대토익스피킹
- 소프트웨어개발 및 협업도구
kisoo
File system mini filter ? [ 펌 ] 본문
[펌] http://orz.or.kr/tt/orz/entry/mini-filter
예전부터 해야지 해야지 하다가 오늘부터 잠깐잠깐하기로 했습니다. 기념으로 간단하게 이 mini filter에 대해서 소개를 정리할께요.
mini filter !가 뭔가? 작은 필터? 어째서 이 이름이 붙었는지는 잘 모르겠지만 말 그대로 작아지는 점을 들면,
* 개발자가 할 일이 조금 줄어든다.
* 필터가 해야 할 일이 조금 줄어든다.
외에도 조금 더 있을지도 모르겠네요. 여튼 MS에서 드라이버에 필터를 붙이면서 자잘한 문제들이 생기면서 XP SP2부터 필터 매니저라는 것을 만들었고 이 녀석을 통해 필터링하는 필터 드라이버를 mini filter driver라고 부릅니다. 사실 file system filter를 위해서라고 해도 과언이 아닐 정도로 이 내용을 보려면 역시 file system filter 쪽에 가야 볼 수 있습니다.
그럼 이 filter manager는 무슨 일을 하는지 살펴보면 먼저 매니저스럽게 필터들을 관리합니다. 이 manage라는 말이 상당히 많은 의미를 포함합니다. 기존의 레거시(legasy)의 경우에는 붙는 놈이 알아서 모든 처리를 할 수 있도록해서 붙어야 했습니다. 또 붙는 시점에 따라 순서가 정해졌습니다. 그리고 언로드는 거의 불가능 했습니다.
필터 매니저가 있어서 얻어지는 좋은 점들을 나열하면,
* 필터의 순서를 결정할 수 있다.
* 언제든 load, unload가 가능하며, 필터의 순서는 이에 영향을 받지 않는다.
* 다양한 부가 기능 제공.
처음과 두번째는 매니저의 도입에 alitude라는 개념이 있으면서 가능한 일입니다. 언제 로드하건 언로드하건 이 값에 의해 순서가 결정되어집니다.
여기서 상단과 하단은 필터 매니저이고요. 상단과 하단 사이의 일반은 기존의 레거시들입니다. 그리고 하단에는 실제 file system이 존재하게 됩니다. altitude라는 값에 의해 상단이나 하단에 속하고 실제로 IRP는 상단, 일반, 하단, file system을 통해서 내려가게 됩니다. 상단이던 하단이던 매니저에게 IRP가 오면 매니저는 자기에게 등록되어 있는 mini filter에서 해당 루틴을 호출해주는. callback 구조로 되어 있습니다. 상단이나 하단에는 많은 필터들이 붙어도 이러한 구조이기 때문에 실제 IRP는 상단, 일반, 하단 만을 거치게 됩니다. 스택도 절약이 가능합니다.
실제로 많은 파일 시스템 필터 드라이버들이 필터용으로 볼륨에 붙여놓는 것과 함수(function) 개체를 분리해서 사용하는 것과 비슷합니다.
다양한 부가 기능 제공이라고 했는데, 이게 또 상당히 매력적이죠. file name을 알려주는 것 부터 시작해서 application과 통신 수단도 제공합니다. 그 외에도 많은 것들이 추가되어서 기존에 골치 아픈 문제들을 많이 해결해주고 있습니다.
저도 현재 그리 많은 것을 해보지는 않았고 로드해서 특정 메이저 코드에서 제 루틴을 호출되는 것 까지 확인했습니다. 예전에 가이드를 뽑아둔게 있었는데 잊어버려서 모니터로 보려니 영.. 그래서 mini filter에서 쓰이는 구조체 등을 많이 확인하지 못했거든요. 루틴의 파라메터로 넘어와주는 것들에 대해서만 windbg로 보면서 좀 확인한 정도?
좀 더 주물러서 좋은 정보가 올라갈 수 있으면 좋겠네요.
예전부터 해야지 해야지 하다가 오늘부터 잠깐잠깐하기로 했습니다. 기념으로 간단하게 이 mini filter에 대해서 소개를 정리할께요.
mini filter !가 뭔가? 작은 필터? 어째서 이 이름이 붙었는지는 잘 모르겠지만 말 그대로 작아지는 점을 들면,
* 개발자가 할 일이 조금 줄어든다.
* 필터가 해야 할 일이 조금 줄어든다.
외에도 조금 더 있을지도 모르겠네요. 여튼 MS에서 드라이버에 필터를 붙이면서 자잘한 문제들이 생기면서 XP SP2부터 필터 매니저라는 것을 만들었고 이 녀석을 통해 필터링하는 필터 드라이버를 mini filter driver라고 부릅니다. 사실 file system filter를 위해서라고 해도 과언이 아닐 정도로 이 내용을 보려면 역시 file system filter 쪽에 가야 볼 수 있습니다.
그럼 이 filter manager는 무슨 일을 하는지 살펴보면 먼저 매니저스럽게 필터들을 관리합니다. 이 manage라는 말이 상당히 많은 의미를 포함합니다. 기존의 레거시(legasy)의 경우에는 붙는 놈이 알아서 모든 처리를 할 수 있도록해서 붙어야 했습니다. 또 붙는 시점에 따라 순서가 정해졌습니다. 그리고 언로드는 거의 불가능 했습니다.
필터 매니저가 있어서 얻어지는 좋은 점들을 나열하면,
* 필터의 순서를 결정할 수 있다.
* 언제든 load, unload가 가능하며, 필터의 순서는 이에 영향을 받지 않는다.
* 다양한 부가 기능 제공.
처음과 두번째는 매니저의 도입에 alitude라는 개념이 있으면서 가능한 일입니다. 언제 로드하건 언로드하건 이 값에 의해 순서가 결정되어집니다.
+-----------------+
| 상단 |
| 일반 |
| 하단 |
+-----------------+
| 상단 |
| 일반 |
| 하단 |
+-----------------+
여기서 상단과 하단은 필터 매니저이고요. 상단과 하단 사이의 일반은 기존의 레거시들입니다. 그리고 하단에는 실제 file system이 존재하게 됩니다. altitude라는 값에 의해 상단이나 하단에 속하고 실제로 IRP는 상단, 일반, 하단, file system을 통해서 내려가게 됩니다. 상단이던 하단이던 매니저에게 IRP가 오면 매니저는 자기에게 등록되어 있는 mini filter에서 해당 루틴을 호출해주는. callback 구조로 되어 있습니다. 상단이나 하단에는 많은 필터들이 붙어도 이러한 구조이기 때문에 실제 IRP는 상단, 일반, 하단 만을 거치게 됩니다. 스택도 절약이 가능합니다.
실제로 많은 파일 시스템 필터 드라이버들이 필터용으로 볼륨에 붙여놓는 것과 함수(function) 개체를 분리해서 사용하는 것과 비슷합니다.
다양한 부가 기능 제공이라고 했는데, 이게 또 상당히 매력적이죠. file name을 알려주는 것 부터 시작해서 application과 통신 수단도 제공합니다. 그 외에도 많은 것들이 추가되어서 기존에 골치 아픈 문제들을 많이 해결해주고 있습니다.
저도 현재 그리 많은 것을 해보지는 않았고 로드해서 특정 메이저 코드에서 제 루틴을 호출되는 것 까지 확인했습니다. 예전에 가이드를 뽑아둔게 있었는데 잊어버려서 모니터로 보려니 영.. 그래서 mini filter에서 쓰이는 구조체 등을 많이 확인하지 못했거든요. 루틴의 파라메터로 넘어와주는 것들에 대해서만 windbg로 보면서 좀 확인한 정도?
좀 더 주물러서 좋은 정보가 올라갈 수 있으면 좋겠네요.
Comments