커널 메모리 Paged Pool 또는 Nonpaged Pool Leak 이 의심스러울 때 polmon 을 사용하여 확인하는 방법에 대해 앞서 정리하였던 적이 있습니다. poolmon 을 사용하여 pool tag 를 찾았을 경우, 해당 pool tag 를 사용하는 드라이버를 찾고자 할 때 findstr 명령을 사용하여 검색해 낼 수 있습니다. 탐색기를 사용한 방법에 대해서는 kb를 참고하시면 되겠습니다. 


테스트 방법은 아주 간단합니다. 
pooltag.exe 툴을 사용하여 TCPt Tag를 찾았는데 이 태그를 사용하는 드라이버 파일은 어떤 녀석인지? 아래와 같이 findstr 명령을 통해 검색할 것입니다. 



findstr 명령의 자세한 사용법에 대해서는 findstr /? 명령을 사용해 확인하시면 됩니다. 일반적으로 /M(파일 이름 출력) /L(찾는 tag 문자열을 글자 그대로 검색) 스위치를 사용합니다. 

C:\WINDOWS\SYSTEM32\DRIVERS> FINDSTR /M /L TCPt *.sys


수행 결과를 통해 TCPt Tag 를 사용하는 Driver 는 tcpip.sys 파일임을 확인할 수 있습니다.



해당 드라이버가 c:\windows\system32\drivers 폴더에 존재하지 않을 경우 검색에 실패할 수 있습니다. 그럴 때는 %SystemRoot%, %ProgramFiles%, %SystemDrive% 를 비롯하여 *.sys 파일이 있을만한 곳을 일일이 검색해 보는 게 좋을 것 같습니다. 이 때는 /d 스위치를 사용하면 되겠네요. 다른 효과적인 방법이 있을까요? 물론 메모리 덤프가 있다면 보다 쉽게 찾을 수 있겠지만요... 


[참고자료]
How to find pool tags that are used by third-party drivers

Detecting and analyzing memory leaks


작성자 : Lai Go / 작성일자 : 2009.07.31
Posted by Lai Go