Descompilar código .net (.net Refletor)

screenshot_full_screen

Uma das coisas que sempre me assustou no .net é a facilidade com que se consegue chegar ao código original de um executável ou libraria baseada na framework.

Existe uma serie de ferramentas que permitem de uma forma fácil, rápida e simples ver o código de uma aplicação .net.

Dessas ferramentas destaco uma que creio ser a mais popular que é o .NET Reflector da Redgate, para aceder ao código de uma aplicação basta clicar no botão browse e seleccionar a assembly que queremos ver o código e com o botão direito fazer disassemble. Claro que não incentivo ninguém a andar a esmiuçar o código de aplicações de terceiros. Eu uso frequentemente esta ferramenta para estudar o código das librarias da própia framework e ver como é que os senhores da Microsoft implementam certas funcionalidades e obter algumas luzes das melhores práticas a vários niveis na programação em “cima” da framework.

5 comentários em “Descompilar código .net (.net Refletor)”

  1. E para grandes males, grandes remédios tal como estes obfuscadores open source de código .NET:

    Obfuscar: http://code.google.com/p/obfuscar/

    Babel Ofuscator: http://sigma-draconis.blogspot.com/

    Existem obfuscadores pagos muito bons também, mas esses deixo para quem quiser pesquisar.

    Já agora, o Java e a muitas das linguagens “virtualizadas”/interpretadas são passiveis de serem alvo de engenharia reversa. Por isso, as boas aplicações devem ser obfuscadas após compiladas, para evitar que os menos bem intencionados não se aproveitem indevidamente dos “segredos” alheios… =)

  2. E para grandes males, grandes remédios tal como estes obfuscadores open source de código .NET:

    Obfuscar: http://code.google.com/p/obfuscar/

    Babel Ofuscator: http://sigma-draconis.blogspot.com/

    Existem obfuscadores pagos muito bons também, mas esses deixo para quem quiser pesquisar.

    Já agora, o Java e a muitas das linguagens “virtualizadas”/interpretadas são passiveis de serem alvo de engenharia reversa. Por isso, as boas aplicações devem ser obfuscadas após compiladas, para evitar que os menos bem intencionados não se aproveitem indevidamente dos “segredos” alheios… =)

  3. Viva,

    Ultimamente tenho pensado um pouco neste assunto e sinceramente não vejo que seja um problema real para o momento que vivemos hoje.

    Hoje em dia uma aplicação é composta por milhares e milhares de linhas de código e o facto de ser desenvolvida usado Object Oriented faz con que seguir a aplicação pelo seu código é algo praticamente impossivel de conseguir.

    Não tiveste em conta nesta tua análise é que o código apresentado pelo Reflector é o código para o CRL e não, o código desenvolvimento orginalmente.

    Estas a imaginar um cliente tem a desistir de comprar o teu software porque alguém ando a fazer copy do código todas as tuas DLLs e fez um software igual, mas, mais barato? Parece-me algo muito pouco provável de acontecer.

    Para as pessoas com medo, sempre existem ferramentas de ofuscação de código que já foram aqui apresentadas.

    Abraços
    Paulo Aboim Pinto
    Odivelas – Portugal

  4. Viva,

    Ultimamente tenho pensado um pouco neste assunto e sinceramente não vejo que seja um problema real para o momento que vivemos hoje.

    Hoje em dia uma aplicação é composta por milhares e milhares de linhas de código e o facto de ser desenvolvida usado Object Oriented faz con que seguir a aplicação pelo seu código é algo praticamente impossivel de conseguir.

    Não tiveste em conta nesta tua análise é que o código apresentado pelo Reflector é o código para o CRL e não, o código desenvolvimento orginalmente.

    Estas a imaginar um cliente tem a desistir de comprar o teu software porque alguém ando a fazer copy do código todas as tuas DLLs e fez um software igual, mas, mais barato? Parece-me algo muito pouco provável de acontecer.

    Para as pessoas com medo, sempre existem ferramentas de ofuscação de código que já foram aqui apresentadas.

    Abraços
    Paulo Aboim Pinto
    Odivelas – Portugal

  5. Hmm, Paulo, discordo contigo!

    Na minha opinião, numa linguagem orientada a objectos é MUITO mais simples seguir todo o código e reproveita-lo.

    Hugz,
    Luis

Os comentários estão fechados.