Pergunta

Na verdade o que eu estou tentando construir é como um tipo de firewall. Ele deve ser capaz de conhecer todos os pedidos que vão de minha máquina. Ele deve ser capaz de parar os selecionados. Eu não sei como começar mesmo sobre com este. Estou tendo VS 2008/2005 com o quadro 2.0. Por favor, deixe-me saber se há alguma classe particular eu posso começar e há quaisquer amostras que puder conseguir.

Foi útil?

Solução

Firewalls realmente deve ser implementada bastante baixo na pilha de rede; Eu sugiro fortemente NDIS. Este artigo podem ser de interesse.

Outras dicas

Algo como isso pode ajudar você a começar: http://www.mentalis.org / soft / projetos / pmon /

Este # projeto C permite que os administradores do Windows NT para pacotes IP de interceptação enviados através de uma das interfaces de rede no computador. Isso pode ser muito útil para software de rede de depuração ou para monitorar a atividade de rede de aplicações não confiáveis.

Como Matt disse, ele realmente tem que ser NDIS.

Certifique-se de alocar um monte de tempo para desenvolver o motorista, eu recomendo 6 - 12 meses apenas para obtê-lo a fase alpha-release. Tendo lidado com NDIS Posso assegurar-vos que é uma dor como nenhum outro.

Se você pretende lançar seu produto para o público que você vai precisar de tossir alguns principal para a Microsoft para obter o driver aprovado (WHQL), caso contrário os usuários irão ser atingido com várias caixas de diálogo desagradáveis ??após a instalação (do "presente software é extremamente inseguro" variedade). O processo de aprovação é lento e não está disponível para Windows 2000, provavelmente ido para XP em breve. 64 aprovação bit é um pagamento separado.

é fechado em utilização C ainda qualquer pequeno erro é amplificado na forma de uma tela azul (por exemplo, uma referência nula ou um ligeiro transbordamento tampão). Você não pode criar tópicos, a sua API é 100% diferente do modo de usuário normal API e realmente tentando se comunicar com os meios de modo de usuário lidar com o sistema de IRP de arrepiar.

si NDIS é mais de engenharia em um mau, MFC-style caminho. Você está restrito a um subconjunto da API do kernel (que faz algumas coisas muito difíceis, como acesso ao registro). Não fazer isso resulta em desqualificação imediata WHQL (não, você não receber o seu dinheiro de volta!).

Cada linha de código precisa ser verificada cuidadosamente para garantir que ele está se comportando corretamente para o nível IRQL ele está sendo executado em (que basicamente determina se o seu código pode ser interrompido por outros processos). Chamar uma função API com os resultados nível errado em uma tela azul. Além disso, a criação de uma estrutura sobre a pilha que é mais do que 500 - 1000 bytes resulta em um excesso de pilha (tela azul claro). Isso por si só pode produzir algum divertimento depuração sessões quando você tem um call-pilha 15 linhas de profundidade com algumas pequenas alocações em cada função.

Apesar de tudo isso, e apesar de que NDIS passou por 6 revisões, é realmente vale a pena fazer se você quiser um desafio. A recompensa é um produto de software que vai vender bem, porque não muitos outros se atrevem a perder-se com esse tipo de coisa. Um requisito importante é o conhecimento da linguagem de montagem (para depuração). Lendo sobre o funcionamento das janelas do kernel também é muito útil (não apenas NDIS).

Alguns anos atrás eu precisava saber sobre a largura de banda da rede que está sendo usado por todos os aplicativos em um sistema Windows.

Sem uma pista sobre a magnitude da tarefa que estava compromisso, eu continuei a aprender a escrever um driver de filtro TDI.

Ele levou cerca de dois anos. Dois anos em tempo integral , desde que eu estava vivendo fora de algumas opções de ações. NDIS é mais fácil do que TDI, no entanto. Prolly como o homem diz, um ano em tempo integral.

Você pode fazer coisas firewall em nível TDI e é bom lá, desde que você pode associar soquetes com aplicações (que você não pode fazer em NDIS). Você também pode bloquear e / ou forma largura de banda envia. Você pode bloquear recebe, mas você não pode realmente forma recebe pelo TDI, porque você não tem permissão para fazer uma pausa (a receber código é executado de caminho na DISPATCH_LEVEL). Eu descobri uma maneira de contornar isso e tomou uma patente fora nele, mas eu não recomendo a partir de um POV técnico.

OTOH um hacker de verdade vai simplesmente ignorar TDI e falar diretamente com o driver NDIS; um firewall TDI é bypassable.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top