Pergunta Segurança para Fragmento de Código C#

  • 2012年3月31日 23:28
     
     

    Boa noite. Estou estudando tudo que posso sobre segurança do código fonte em C#, em função da fragilidade do MSIL, e de tantas ferramentas como Reflector, DLL Disassemble, Crack.Net que eu conheço. Bem já consegui resolver alguns problemas:

    - Ofuscar para evitar o DLL Disassemble e reduzindo muito do que é visto pelo Reflector, usando o Crypto Obfuscator for Net;

    - Criptografar Senhas com Hash no banco;

    - Guardar string de conexão externamente e criptografada;

    - Criptografia de conteúdo da memória.

    Porém há outros itens que ainda não consegui, pois é difícil encontrar exemplos funcionais de boas técnicas, só muita teoria inconsistente, ao menos nas centenas de sites que visitei em 7 meses.

    Encontrei na web um artigo de um Hacker que dava várias "Dicas" para dificultar ao máximo o trabalho deles mesmos. Porém a maioria era dedicada a programação binária, quando se compilava realmente, mas agora com o Dot.Net, a maioria não tem mais finalidade.

    Porém em outro artigo de uma faculdade, se fazia referencia teórica a certas práticas como:

    - Colocar Marca d´agua no código;

    - Travas de segurança;

    - Rotinas de passagem obrigatória, que se fossem retiradas ou adulteradas o sistema pararia de funcionar (não entendi como implementar)

    - Entre outras...

    Pergunta:

    1) Como o Crack.Net permite percorrer em RAM tudo que um programa Dot.Net Executa e até alterar seus valores, como ficaria o licenciamento de um software nesse caso? Pois se usar um IF (valor = registro) se poderia alterar para IF (true = true) e acabaria com qualquer validação?

    2) Como se pode incluir no código de uma Solution (Windows Forms) uma form de obrigar várias rotinas a passar sempre por determinado ponto, e se esse ponto fosse adulterado ou retirado o sistema deixasse de funcionar? Se o código pode ser analisado em RunTime, não sei como implementar isso com um pouco de segurança.