Portmon v3.03
Por Mark Russinovich
Publicado em: 12 de janeiro de 2012
Baixar o Portmon (226 KB)
Execute agora do Sysinternals Live.
Introdução
O Portmon é um utilitário que monitora e exibe todas as atividades de portas seriais e paralelas em um sistema. O utilitário tem recursos avançados de filtragem e pesquisa que o tornam uma ferramenta poderosa para explorar a maneira como o Windows funciona, ver como os aplicativos usam as portas ou rastrear problemas nas configurações do sistema ou do aplicativo.
Portmon 3.x
A versão 3.x do Portmon marca a introdução de uma série de recursos avançados.
- Monitoramento remoto: capture a saída da depuração do modo kernel e/ou do Win32 de qualquer computador acessível por TCP/IP — mesmo por meio da internet. Você pode monitorar vários computadores remotos simultaneamente. O Portmon irá até mesmo instalar seu próprio software cliente, se você o estiver executando em um sistema Windows NT/2000 e estiver capturando de um outro sistema Windows NT/2000 na mesma Vizinhança de Rede.
- Listas de filtros mais recentes: o Portmon foi ampliado com recursos de filtragem avançados e é capaz de lembrar suas seleções de filtro mais recentes, com uma interface que torna muito fácil selecioná-los novamente.
- Cópia para a área de transferência: selecione várias linhas na janela de saída e copie seu conteúdo para a área de transferência.
- Dar destaque: realce a saída de depuração que corresponda ao seu filtro de realce e até mesmo personalize as cores do destaque.
- Registrar em arquivo: grave a saída da depuração em um arquivo à medida que for capturada.
- Imprimir: imprima a saída de depuração capturada, no todo ou em parte, em uma impressora.
- Conteúdo em um arquivo: o Portmon agora é implementado como apenas um arquivo.
O arquivo de ajuda online descreve todos esses recursos e muito mais, de forma detalhada.
Instalação e Uso
Basta executar o arquivo de programa do Portmon (portmon.exe) e o Portmon começará imediatamente a capturar a saída de depuração. Para executar o Portmon no Windows 95, você precisa obter a atualização do WinSock2 junto à Microsoft. Observe que, se você executar o Portmon no Windows NT/2000, o portmon.exe precisará estar localizado em uma unidade que não seja de rede e você precisará ter privilégio administrativo. Os menus, teclas de atalho ou botões da barra de ferramentas podem ser usados para apagar a janela, salvar os dados monitorados em um arquivo, pesquisar a saída, alterar a fonte da janela e muito mais. A ajuda online descreve todos os recursos do Portmon.
O Portmon entende todos os comandos de controle de E/S (IOCTLs) das portas seriais e paralelas e os mostrará junto com informações interessantes relativas aos parâmetros associados. Para solicitações de leitura e gravação, o Portmon mostra as primeiras diversas dezenas de bytes do buffer, usando "." para representar caracteres não imprimíveis. A opção de menu Mostrar Hex permite que você alterne entre o ASCII e a saída hexadecimal bruta dos dados do buffer.
Como funciona: WinNT
A GUI do Portmon é responsável por identificar portas seriais e paralelas. O utilitário faz isso enumerando as portas seriais configuradas em HKEY_LOCAL_MACHINE\Hardware\DeviceMap\SerialComm e as portas paralelas definidas em HKEY_LOCAL_MACHINE\Hardware\DeviceMap\Parallel Ports. Essas chaves contêm os mapeamentos entre os nomes de dispositivos de porta serial e paralela e os nomes acessíveis pelo Win32.
Quando você seleciona uma porta para monitorar, o Portmon envia uma solicitação para o driver de dispositivo que inclui o nome do NT (por exemplo, \device\serial0) no qual você está interessado. O driver usa APIs de filtragem padrão para anexar seu próprio objeto de dispositivo de filtro ao objeto de dispositivo de destino. Primeiro, usa ZwCreateFile para abrir o dispositivo de destino. Em seguida, converte o identificador que recebe de volta do ZwCreateFile em um ponteiro de objeto do dispositivo. Após criar seu próprio objeto de dispositivo de filtro que corresponde às características do destino, o driver chama IoAttachDeviceByPointer para estabelecer o filtro. A partir desse ponto, o driver do Portmon verá todas as solicitações direcionadas ao dispositivo de destino.
O Portmon tem um conhecimento integrado de todos os IOCTLs das portas seriais e paralelas padrão — a principal maneira usada pelos aplicativos e drivers para configurar e ler as informações de status das portas. Os IOCTLs são definidos nos arquivos \ddk\src\comm\inc\ntddser.h e \ddk\src\comm\inc\ntddpar.h do DDK e alguns estão documentados no DDK.
Como funciona: Windows 95 e 98
No Windows 95 e 98, a GUI do Portmon depende de um VxD carregado dinamicamente para capturar as atividades seriais e paralelas. O driver de dispositivo VCOMM (Comunicações Virtuais) do Windows serve como a interface para dispositivos paralelos e seriais, de modo que os aplicativos que acessam as portas indiretamente usem seus serviços. O VxD do Portmon usa o hooking do serviço de VxD padrão para interceptar todos os acessos às funções do VCOMM. Assim como seu driver de dispositivo do NT, o VxD do Portmon interpreta as solicitações para mostrá-las em um formato fácil de entender. No Windows 95 e 98, o Portmon monitora todas as portas, então não existe uma seleção de portas como no NT.
Baixar o Portmon (226 KB)
Executar agora a partir do Sysinternals Live.