2012/02/03
Descompilador .Net Gratuito
A maioria das pessoas saberá o que é o chamado "código-fonte" (source-code)... aquelas linguagens estranhas que os hackers escrevem nos filmes a toda a velocidade, e que no fundo são as instruções que se escondem no interior de todo e qualquer programa que executam nos vossos computadores.
Todo esse texto, cuja sintaxe varia em função da linguagem de programação, é depois interpretada ou compilada em instruções que fazem sentido para o computador, mas que se tornam praticamente indecifráveis para nós.
No entanto, não se pense que tudo fica perdido; ou que o vosso programa automaticamente fica protegido contra os olhares indiscretos: pois existem ferramentas que fazem o processo inverso, descompilando um executável de volta para código fonte, como é o caso desde descompilador de .Net gratuito que hoje vos trago.
Neste caso, o .Net é um pouco diferente das linguagens compiladas, pois utiliza uma linguagem intermédia que até facilita este processo; mas... o princípio é o mesmo.
Este tipo de ferramentas é bastante poderosa, e como sempre... pode ser utilizada para o "bem" e para o "mal". Servindo para que um programador possa verificar se o seu programa está efectivamente a ser compilado tal como pretendia, e até podendo ajudar a optimizar partes críticas - como também pode ser usado por um atacante/hacker que esteja a ver como funcionam as partes internas do programa, e assim podendo obter informação que não deveria ou ultrapassar sistemas de protecção.
Subscrever:
Enviar feedback (Atom)
Dai ser tão importante ofuscar o código...
ResponderEliminaré sempre um perigo enorme alguém andar a vasculhar o nosso código...
O artigo seria bom se indica-se que é possível ofuscar o código e que ferramentas são ideias para o processo tipo, .NET Reactor
ResponderEliminar"Neste caso, o .Net é um pouco diferente das linguagens compiladas, pois utiliza uma linguagem intermédia que até facilita este processo; mas... o princípio é o mesmo."
ResponderEliminarNão é não o! .Net ou como é conhecido dot Not é uma linguagem interpretada, por isso é que é possivel "descompilar", já o Delphi ou o c++ é impossivel de descompilar.
O que é uma linguagem interpretada: a que necessita de um programa intermedio para se executar o nosso software. Exemplos: .Net, Visual Basic, JAVA, Python, perl, etc.
O ofuscação do código é muito importante nestas linguagens porque dificulta a descoberta dos algoritmos.
Há até concursos de ofuscação: http://c2.com/cgi/wiki?InternationalObfuscatedCeeCodeContest
A obfuscação não entra aqui para o caso. Isso é algo que apenas serve para tornar ilegível o código fonte: depois de um programa compilado, pode ser sempre descompilado - independentemente da linguagem fonte que lhe deu origem (no extremo, usando um desassemblador).
ResponderEliminarObviamente que o programa fonte que é recriado não é igual ao original (não terá o nome das variáveis, ou comentários, ou nome das funções, que serão subtituidos por nomes genéricos)... mas terás código fonte que, recompilando, dará origem ao mesmo binário executável.
E por isso mesmo, se torna irrelevante qualquer "obsfucação".
Imagina que há um programa que faz um:
a=1+1;
E na sua versão obfuscada seria:
byzpo234=678234-678233+5-4+1-2;
(exemplo estúpido eu sei :)
Se o compilador optimizar a coisa, o resultado seria simplesmente um:
a=2
em instruções binárias, e que quando descompiladas retornariam um programa fonte do género:
var1=2;
Ou seja... não há obfuscação que faça diferença.
A obfuscação poderá servir como desmotivadora e dificultar o processo... mas não serve de nada para quem se dedicar a fazer o reverse engineering do executável (conforme demonstrado pelas décadas de hacks e cracks que continuam a existir, ultrapassando todo e qualquer tipo de pseudo-sistemas de segurança dos softwares).
"depois de um programa compilado, pode ser sempre descompilado - independentemente da linguagem fonte que lhe deu origem"
ResponderEliminarnão se chama descompilado mas dessasemblado, é muito diferente porque o resultado será código maquina (bons velhos tempos)!
quando se trata de obfuscar o código é para dificultar a descoberta dos algoritmos, e baseia-se numa maxima da programação que diz que é mais facil escrever código do que ler código, isto acontece no dia a dia quando estamos um periodo de tempo sem trabalhar-mos com o código de um programa e depois para pegar naquilo é mais complicado do que devia.
Quanto á protecção do software será em ultima instancia inutil, porque se podemos fechar um cofre tambem podemos abri-lo -que o diga a Steinberg que teve de pagar aos hackers para irem de férias em vez de crackarem o seu software-