Questão de Engenharia de Software — Ferramentas de Desenvolvimento de Software — NUCEPE 2018
Engenharia de Software›Ferramentas de Desenvolvimento de Software
Código
qq384494
Banca
NUCEPE
Órgão
PC-PI
Ano
2018
Nível
Superior
Cargo
Perito Criminal – Informática
Acerca das técnicas e ferramentas de engenharia reversa, analise as afirmações abaixo:I. Um debugger é um tipo de ferramenta de análise que opera em tempo de execução, permitindo manipular o programa em nível de código de máquina. Nela é possível executar o programa instrução por instrução.II. É possível traduzir, em sua totalidade, dados binários em uma linguagem de alto nível utilizando uma ferramenta para decompilar o código, pois durante o processo de compilação são mantidas informações como nome de variáveis e de funções que identificam a estrutura dentro do código binário.III. A característica mais complexa em relação à ferramenta disassembly é distinguir o que é dado do que é código executável, pois essa é uma ferramenta de análise estática que transforma bytes em linguagem assembly.IV. Um ambiente virtual, como o Xen Server, propicia um ambiente para utilização de ferramentas de análise de código, uma vez que permite o uso de clones, salvamento de estado em background e snapshots, virtualizando um ambiente que simula o hardware do computador.Está CORRETO apenas o que se afirma em:
AI, II, III e IV.
BI, III e IV.
CI, II e IV.
DI, II e III.
EIII e IV.
Revelar gabarito e comentário▾
GabaritoB — I, III e IV.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Engenharia reversa: debugger, disassembly e decompilação
Gabarito: letra B (itens I, III e IV). A única afirmação incorreta é a II, pois a decompilação não consegue recuperar perfeitamente o código de alto nível – muitas informações, como nomes de variáveis e funções, são perdidas durante a compilação (a menos que símbolos de depuração estejam presentes).
A questão testa o conhecimento sobre ferramentas e técnicas de engenharia reversa de software. Vamos analisar cada item.
Item
Afirmação
Correto?
Justificativa
I
Um debugger opera em tempo de execução, permitindo executar o programa instrução por instrução.
✅ Sim
Ferramenta de análise dinâmica que permite step-by-step em código de máquina.
II
É possível traduzir totalmente dados binários para linguagem de alto nível por decompilação, pois nomes de variáveis e funções são mantidos.
❌ Não
A decompilação é imperfeita; nomes e estrutura original são perdidos na compilação (exceto com símbolos de depuração).
III
A maior dificuldade do disassembly é distinguir dados de código executável, sendo uma ferramenta de análise estática.
✅ Sim
Análise estática que converte bytes em assembly; a separação código/dado é complexa.
IV
Um ambiente virtual (ex.: Xen Server) propicia ambiente para uso de ferramentas de engenharia reversa.
✅ Sim
Recursos como snapshots e clonagem auxiliam na análise segura de software.
Engenharia reversa: Debugger (análise dinâmica) (Tempo de execução, Instrução por instrução); Disassembler (análise estática) (Dado vs. código executável, Transforma bytes em assembly); Decompilação (Não recupera totalmente, Perde nomes e estrutura)
Item I — ✅ Correto
Um debugger é de fato uma ferramenta de análise dinâmica (em tempo de execução) que permite inspecionar e manipular o programa em nível de código de máquina, executando instrução por instrução (step into/over). É amplamente utilizado para depuração e análise de comportamento.
Item II — ❌ Incorreto
A afirmação de que é possível traduzir "em sua totalidade" dados binários para uma linguagem de alto nível por meio de decompilação é falsa. Durante a compilação, informações como nomes de variáveis, comentários e a estrutura lógica original são perdidas (a menos que o compilador inclua símbolos de depuração, o que não é padrão). A decompilação gera um código de alto nível aproximado, mas não idêntico ao original, e muitas vezes não recupera toda a semântica.
NÃO CAIA NESSA!
A banca utiliza o termo "em sua totalidade" para induzir ao erro. Lembre-se: a decompilação é um processo imperfeito; não é possível reconstruir o código-fonte original com 100% de fidelidade.
Item III — ✅ Correto
O disassembler é uma ferramenta de análise estática que converte código binário (bytes) em linguagem assembly. Uma das maiores dificuldades nesse processo é distinguir o que é dado (constantes, strings) do que é código executável, especialmente quando o código se modifica em tempo de execução (self-modifying code) ou quando há dados intercalados. Essa é uma característica complexa e reconhecida na engenharia reversa.
Item IV — ✅ Correto
Ambientes virtuais como o Xen Server (ou VMware, VirtualBox) oferecem recursos como clones, snapshots e salvamento de estado, que são extremamente úteis para a análise de código malicioso ou para testes de segurança. Eles simulam hardware completo, permitindo executar o software em um ambiente controlado, facilitando a engenharia reversa sem risco de danificar o sistema real.
Conclusão: Corretos os itens I, III e IV. Portanto, a alternativa que os reúne é a letra B.