Ativando um servidor de conexão KD
O servidor de conexão KD incluído nas Ferramentas de Depuração para Windows é chamado KdSrv (kdsrv.exe). Para ativar um servidor de conexão KD, abra uma janela elevada do Prompt de Comando (Executar como Adminstrator) e digite o comando kdsrv.
Observação Você pode ativar um servidor de conexão KD sem ter privilégios elevados, e os clientes de depuração poderão se conectar ao servidor. No entanto, os clientes não poderão descobrir um servidor de conexão KD, a menos que ele tenha sido ativado com privilégios elevados. Para obter informações sobre como descobrir servidores de depuração, consulte Searching for KD Connection Servers.
Importante
Há considerações de segurança importantes ao usar a depuração remota. Para obter mais informações, incluindo informações sobre como habilitar o modo seguro, consulte Segurança durante a depuração remota e Considerações de segurança para ferramentas de depuração do Windows.
O KdSrv suporta vários protocolos de transporte: named pipe (NPIPE), TCP, COM port, secure pipe (SPIPE) e secure sockets layer (SSL).
A sintaxe para a linha de comando KdSrv depende do protocolo usado. Existem as seguintes opções:
Métodos de conexão recomendados, com alguns de segurança adicionais
kdsrv -t spipe:proto=Protocol,{certuser=Cert|machuser=Cert},pipe=PipeName[,hidden][,password=Password]
kdsrv -t ssl:proto=Protocol,{certuser=Cert|machuser=Cert},port=Socket[,hidden][,password=Password]
kdsrv -t ssl:proto=Protocol,{certuser=Cert|machuser=Cert},port=Socket,clicon=Client[,password=Password]
Métodos de conexão não seguros
kdsrv -t npipe:pipe=PipeName[,hidden][,password=Password][,IcfEnable]
kdsrv -t tcp:port=Socket[,hidden][,password=Password][,ipversion=6][,IcfEnable]
kdsrv -t tcp:port=Socket,clicon=Client[,password=Password][,ipversion=6]
kdsrv -t com:port=COMPort,baud=BaudRate,channel=COMChannel[,hidden][,password=Password]
Parâmetros
Os parâmetros nos comandos anteriores têm os seguintes valores possíveis:
pipe=PipeName
Quando o protocolo NPIPE ou SPIPE é usado, PipeName é uma cadeia de caracteres que servirá como o nome do pipe. Cada nome de pipe deve identificar um servidor de processo exclusivo. Se você tentar reutilizar um nome de pipe, receberá uma mensagem de erro.
PipeName não deve conter espaços ou aspas.
PipeName pode incluir um código numérico de formato printf-style, como %x ou %d. Este será substituído pelo ID do processo do KdSrv. Um segundo código será substituído pelo ID do thread do KdSrv.
port=Socket
Quando o protocolo TCP ou SSL é usado, Socket é o número da porta do soquete.
Também é possível especificar um intervalo de portas separadas por dois pontos. KdSrv irá verificar cada porta nesta faixa para ver se é livre. Se encontrar uma porta livre e não ocorrer nenhum erro, o servidor de conexão KD será criado. O cliente inteligente terá que especificar a porta real que está sendo usada para se conectar ao servidor. Para determinar a porta real, use qualquer um dos métodos descritos em Procurando por servidores de conexão KD; quando este servidor de conexão KD é exibido, a porta será seguida por dois números separados por dois pontos. O primeiro número será a porta real utilizada; o segundo pode ser ignorado. Por exemplo, se a porta foi especificada como port=51:60e a porta 53 foi realmente usada, os resultados da pesquisa mostrarão "port=53:60". (Se você estiver usando o parâmetro clicon para estabelecer uma conexão reversa, o cliente inteligente pode especificar um intervalo de portas dessa maneira, enquanto o servidor de conexão KD deve especificar a porta real usada.)
clicon= Cliente
Quando o protocolo TCP ou SSL é usado e o parâmetro
Como o servidor de conexão KD está procurando um cliente específico, você não pode conectar vários clientes ao servidor se usar esse método. Se a conexão for recusada ou for interrompida, você terá que reiniciar o servidor de processo. Um servidor de conexão KD de conexão reversa não aparecerá quando alguém usar a opção de linha de comando -QR para exibir todos os servidores ativos.
Observação Quando clicon é usado, é melhor iniciar o cliente inteligente antes que o servidor de conexão KD seja criado, embora a ordem usual (servidor antes do cliente) também seja permitida.
port=COMPort
Quando o protocolo COM é usado, COMPort especifica a porta COM a ser usada. O prefixo "COM" é opcional -- por exemplo, "com2" e "2" são aceitáveis.
baud=BaudRate
Quando o protocolo COM é usado, BaudRate especifica a taxa de transmissão na qual a conexão será executada. Qualquer taxa de transmissão suportada pelo hardware é permitida.
channel=COMChannel
Se o protocolo COM for usado, COMChannel especifica o canal COM a ser usado na comunicação com o cliente de depuração. Pode ser qualquer valor entre 0 e 254, inclusive. Você pode usar uma única porta COM para várias conexões usando números de canal diferentes. (Isso é diferente do uso de portas COM para um cabo de depuração -- nessa situação, você não pode usar canais dentro de uma porta COM.)
proto=Protocolo
Se o protocolo SSL ou SPIPE for usado, protocolo especifica o protocolo Secure Channel (S-Channel). Pode ser qualquer uma das strings tls1, pct1, ssl2 ou ssl3.
Cert
Se o protocolo SSL ou SPIPE for usado, Cert especifica o certificado. Pode ser o nome do certificado ou a impressão digital do certificado (a cadeia de dígitos hexadecimais fornecida pelo snapin do certificado). Se a sintaxe certuser=Cert for usada, o depurador procurará o certificado no armazenamento do sistema (o repositório padrão). Se a sintaxe machuser=Cert for usada, o depurador procurará o certificado no armazenamento da máquina. O certificado especificado deve oferecer suporte à autenticação do servidor.
escondido
Impede que o servidor de conexão KD apareça quando alguém usa a opção de linha de comando -QR para exibir todos os servidores ativos.
password=Password
Requer um cliente inteligente para fornecer a senha especificada para se conectar ao servidor de conexão KD.
de senha pode ser qualquer cadeia alfanumérica, com até doze caracteres.
Importante
Usar uma senha com protocolo TCP, NPIPE ou COM oferece apenas uma pequena quantidade de proteção, porque a senha não é criptografada. Quando utiliza uma palavra-passe juntamente com um protocolo SSL ou SPIPE, a palavra-passe é encriptada. Se você quiser estabelecer uma sessão remota mais segura, você deve usar o protocolo SSL ou SPIPE.
ipversion=6
(Somente Ferramentas de Depuração para Windows 6.6.07 e versões anteriores) Força o depurador a usar IP versão 6 em vez de versão 4 ao usar TCP para se conectar à Internet. No Windows Vista e versões posteriores, o depurador tenta definir automaticamente o padrão para IP versão 6, tornando essa opção desnecessária.
IcfEnable
Faz com que o depurador habilite as conexões de porta necessárias para comunicação TCP ou pipe nomeado quando o Firewall de Conexão com a Internet estiver ativo. Por padrão, o Firewall de Conexão com a Internet desativa as portas usadas por esses protocolos. Quando IcfEnable é usado com uma conexão TCP, o depurador faz com que o Windows abra a porta especificada pelo parâmetro Socket. Quando IcfEnable é usado com uma conexão de pipe nomeado, o depurador faz com que o Windows abra as portas usadas para pipes nomeados (portas 139 e 445). O depurador não fecha essas portas após o término da conexão.