Um dos usos da engenharia reversa de software é auditar um ...

Próximas questões
Com base no mesmo assunto
Q233375 Programação
Um dos usos da engenharia reversa de software é auditar um programa para avaliar sua segurança, bem como as vulnerabilidades do mesmo. Com relação aos descompiladores e desmontadores, assinale a alternativa correta.
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: A - "Uma das diferenças entre descompiladores e desmontadores é que os primeiros geram fontes em linguagem de mais alto nível."

A questão aborda o tema da engenharia reversa de software, que é o processo de analisar um sistema de software para extrair o design e a implementação do código-fonte. Isso é feito para estudar como o programa funciona, o que pode ser útil para várias finalidades como auditoria de segurança, recuperação de código perdido, ou simplesmente para entender a lógica de um software.

Para resolver a questão, é necessário conhecer a diferença entre as ferramentas de engenharia reversa, como descompiladores e desmontadores (ou decompilers e disassemblers, em inglês). Os descompiladores são programas que tentam reverter o processo de compilação, convertendo o código de máquina ou bytecode de volta para uma forma de código-fonte em uma linguagem de alto nível, como Java ou C++, que é mais compreensível para os seres humanos. Já os desmontadores são ferramentas que convertem o código de máquina em linguagem assembly, que é uma representação de baixo nível do código, mais próxima da linguagem de máquina, mas que ainda é legível por humanos com conhecimento técnico especializado.

Portanto, a alternativa A está correta porque destaca essa diferença fundamental entre descompiladores e desmontadores. Os descompiladores são capazes de gerar um código-fonte em uma linguagem de programação de alto nível, como mencionado, o que é usualmente mais fácil de entender e trabalhar do que o código de linguagem assembly produzido pelos desmontadores.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Um desmontador, desassemblador ou disassembler é um programa de computador que converte código de máquina em código escrito em linguagem de montagem. A diferença entre um desmontador e um descompilador é que este último reverte a compilação de uma linguagem de alto nível, enquanto o primeiro reverte a montagem de uma linguagem de montagem.
O código fonte em linguagem de montagem geralmente contém constantes simbólicas, comentários e rótulos de endereçamento que são normalmente removidos do código de máquina gerado. Assim, o desmontador consegue reverter apenas parcialmente o processo de montagem, pois o código fonte produzido não irá conter essas constantes e comentários. Por causa disso, o código produzido por um desmontador é mais difícil de entender (para um humano) que o código fonte original, com suas anotações.
 
http://pt.wikipedia.org/wiki/Desmontador
 
==================
 
A melhor forma de garantir a qualidade do software que você constrói é projetando-o cuidadosamente desde o início. Desta forma, as partes se encaixarão mais perfeitamente, e a funcionalidade de cada parte será mais simples, de maneira que você irá cometer menos erros ao
implementar as várias partes. Mas é difícil não introduzir erros durante a codificação, e uma maneira efetiva de se encontrar estes erros é através das técnicas dinâmicas: ou seja, aquelas que envolvem a execução do programa e a observação de seu comportamento. Em contraste, as técnicas
estáticas são aquelas que você utiliza para garantir a qualidade antes da execução: através da avaliação do projeto e da análise do código (seja por revisão manual, ou através de ferramentas como um verificador de tipos).
 
http://mit.universia.com.br/6/6.170/pdf/6.170_lecture-10.pdf

Gab. A

Descompilador
    Programa de computador que realiza a operação inversa de um compilador, transformando código objeto em código fonte. 

Gabarito A

Descompilador é um programa de computador que realiza a operação inversa de um compilador, transformando código objeto em código fonte. O termo entretanto é mais utilizado para designar programas de computador que traduzem código de máquina (programas executáveis) em código fonte em uma linguagem de programação de alto nível (mais compreensível) que, quando novamente compilado, produzirá um programa executável de características e comportamento igual ao programa executável original. Em comparação, um desmontador transforma código de máquina em linguagem de montagem (menos compreensível).

O sucesso da descompilação depende da quantidade de informação presente no código e da sofisticação da rotina de análise. As representações intermediárias usadas em máquinas virtuais(como Java e .Net) normalmente incluem bastante metadados e informações de alto nível que facilitam a descompilação. Entretanto, linguagens de máquina possuem muito menos metadados e portanto são bem mais difíceis de serem descompiladas.

Esse programa pode ser útil caso perca-se o código fonte de um programa de computador.

Descompiladores automáticos, que geram códigos fontes a partir de arquivos binários, são a utopia de descompilação e mesmo descompiladores (ou desmontadores) avançados atualmente não são capazes de produzir tais resultados sem que o usuário tenha que tomar várias decisões antes que o código fonte possa ser efetivamente utilizado. Além disso, mesmo em casos em que a descompilação é possível, algumas características originais do código fonte como: comentários, nomes de variáveis e funções podem não ser recuperados; mas para isso analises mais detalhadas do código produzido podem ser boas alternativas.

A maioria dos programas estão protegidos por direitos autorais, e embora esses variem de região para região, as diferentes versões de leis de direitos autorais normalmente garante ao autor o direito exclusivo de fazer copias. Como o processo de descompilação envolve a produção de múltiplas copias do programa alvo, a fim de se produzir um código fonte compatível, ela costuma ser proibida sem que haja a expressa autorização do autor.

 

 

 

"Retroceder Nunca Render-se Jamais !"
Força e Fé !
Fortuna Audaces Sequitur !

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo