다음을 통해 공유


Windows용 Portmon v3.03

Mark Russinovich 작성

게시일: 2012년 1월 12일

DownloadPortmon 다운로드(226KB)
Sysinternals Live에서 지금 실행하세요.

소개

Portmon은 시스템의 모든 직렬 및 병렬 포트 활동을 모니터링하고 표시하는 유틸리티입니다. Windows 작동 방식을 탐색하고, 애플리케이션이 포트를 사용하는 방법을 확인하고, 시스템 또는 애플리케이션 구성의 문제를 추적하는 데 강력한 도구가 되는 고급 필터링 및 검색 기능이 있습니다.

Portmon 3.x

Portmon의 버전 3.x는 여러 가지 강력한 기능을 소개합니다.

  • 원격 모니터링: 인터넷을 통해 TCP/IP를 통해 액세스할 수 있는 모든 컴퓨터에서 커널 모드 및/또는 Win32 디버그 출력을 캡처합니다. 여러 원격 컴퓨터를 동시에 모니터링할 수 있습니다. Portmon은 Windows NT/2K 시스템에서 실행 중이고 동일한 네트워크 환경에 있는 다른 Windows NT/2K 시스템에서 캡처하는 경우 클라이언트 소프트웨어 자체를 설치하기도 합니다.
  • 가장 최근 필터 목록:Portmon은 강력한 필터링 기능으로 확장되었으며 가장 최근에 선택한 필터를 기억하고 쉽게 다시 선택할 수 있는 인터페이스를 제공합니다.
  • 클립보드 복사: 출력 창에서 여러 줄을 선택하고 내용을 클립보드에 복사합니다.
  • 강조표시: 강조표시 필터와 일치하는 디버그 출력을 강조 표시하고 강조 표시 색상을 사용자 지정할 수도 있습니다.
  • Log-to-file: 캡처되는 파일에 디버그 출력을 기록합니다.
  • 인쇄: 캡처된 디버그 출력의 전체 또는 일부를 프린터로 인쇄합니다.
  • 한 파일 페이로드:Portmon이 이제 하나의 파일로 구현됩니다.

온라인 도움말 파일은 이러한 모든 기능 등을 자세히 설명합니다.

PortMon screenshot

설치 및 사용

Portmon 프로그램 파일(portmon.exe)을 실행하기만 하면 Portmon이 즉시 디버그 출력 캡처를 시작합니다. Windows 95에서 Portmon을 실행하려면 Microsoft에서 WinSock2 업데이트를 받아야 합니다. Windows NT/2K에서 Portmon을 실행하는 경우 portmon.exe는 비네트워크 드라이브에 있어야 하며 관리자 권한이 있어야 합니다. 메뉴, 핫키 또는 도구 모음 버튼을 사용하여 창 지우기, 모니터링된 데이터를 파일로 저장, 출력 검색, 창 글꼴 변경 등을 수행할 수 있습니다. 온라인 도움말은 Portmon의 모든 기능을 설명합니다.

Portmon은 모든 직렬 및 병렬 포트 I/O 제어(IOCTL) 명령을 이해하고 관련 매개 변수에 관한 흥미로운 정보와 함께 명령을 표시합니다. 읽기 및 쓰기 요청의 경우 Portmon은 '.'를 사용하여 버퍼의 처음 수십 바이트를 표시합니다. 인쇄할 수 없는 문자를 나타냅니다. 16진수 표시 메뉴 옵션을 사용하면 버퍼 데이터의 ASCII 출력과 원시 16진수 출력 간에 전환할 수 있습니다.

작동 방식: WinNT

Portmon GUI는 직렬 및 병렬 포트 식별을 담당합니다. HKEY_LOCAL_MACHINE\Hardware\DeviceMap\SerialComm에 구성된 직렬 포트와 HKEY_LOCAL_MACHINE\Hardware\DeviceMap\Parallel Ports에 정의된 병렬 포트를 열거하여 이를 수행합니다. 이러한 키에는 직렬 및 병렬 포트 장치 이름과 Win32 액세스 가능 이름 간의 매핑이 포함되어 있습니다.

모니터링할 포트를 선택하면 Portmon은 관심 있는 NT 이름(예: \device\serial0)이 포함된 요청을 장치 드라이버로 보냅니다. 드라이버는 표준 필터링 API를 사용하여 자체 필터 장치 개체를 대상 장치 개체에 연결합니다. 먼저 ZwCreateFile을 사용하여 대상 장치를 엽니다. 그런 다음 ZwCreateFile에서 다시 수신한 핸들을 장치 개체 포인터로 변환합니다. 대상의 특성과 일치하는 자체 필터 장치 개체를 생성한 후 드라이버는 IoAttachDeviceByPointer를 호출하여 필터를 설정합니다. 그 시점부터 Portmon 드라이버에서 대상 장치를 겨냥한 모든 요청을 보게 됩니다.

Portmon에서는 애플리케이션과 드라이버가 포트에서 상태 정보를 구성하고 읽는 기본 방법인 모든 표준 직렬 및 병렬 포트 IOCTL에 대한 지식이 기본 제공됩니다. IOCTL은 DDK 파일 \ddk\src\comm\inc\ntddser.h 및 \ddk\src\comm\inc\ntddpar.h에 정의되어 있으며 일부는 DDK에 문서화되어 있습니다.

작동 방식: Windows 95 및 98

Windows 95 및 98에서 Portmon GUI는 직렬 및 병렬 활동을 캡처하기 위해 동적으로 로드된 VxD에 의존합니다. Windows VCOMM(가상 통신) 장치 드라이버는 병렬 및 직렬 장치에 대한 인터페이스 역할을 하므로 포트에 액세스하는 애플리케이션은 해당 서비스를 간접적으로 사용합니다. Portmon VxD는 VCOMM 기능에 대한 모든 액세스를 가로채기 위해 표준 VxD 서비스 후킹을 사용합니다. NT 장치 드라이버와 마찬가지로 Portmon의 VxD는 요청을 해석하여 친숙한 형식으로 표시합니다. Windows 95 및 98에서 Portmon은 모든 포트를 모니터링하므로 NT와 같은 포트 선택이 없습니다.

DownloadPortmon 다운로드(226KB)

Sysinternals Live에서 지금 실행하세요.