Você está na página 1de 14

Engenharia Reversa

E
E
NGENHARIA
NGENHARIA
R
R
EVERSA
EVERSA
UFF Universidade Federal Fluminense
Graduao em Cincia da Computao
Informtica I 2005/2
ntonio !or"e #apa"e da Can$ota !unior
%ie"o lves de #ou&a
%io"o dos #antos 'outin$o
Felipe (ai)o *o$nefin+
1
Engenharia Reversa
2
Engenharia Reversa
ndice
1. Introduao 4
Por que a engenharia reversa na informtica? 4
Exemplos de engenharia reversa 5
Reengenharia 6
Definio de engenharia reversa de soft!are "
2. Tcnicas de engenharia reversa sem cdigo-fonte 7
. Tcnicas de engenharia reversa com cdigo-fonte !
Extrao dos fatos #
$ratamento dos fatos %
4. "s#ectos $egais 12
&eis e acordos '(
)asos famosos '*
%. &i'(iografia 14
3
Engenharia Reversa
1. I)TR*+,-.*

A Engenharia Reversa uma atividade que trabalha com um produto existente (um software, uma
pea mecnica, uma placa de computador, etc! tentando entender como este produto funciona, o
que ele fa" exatamente e como ele se comporta em todas as circunstncias #a"emos engenharia
reversa quando queremos trocar, modificar uma pea (ou um software! por outro, com as mesmas
caracter$sticas ou entender como esta funciona e n%o temos acesso a sua documenta%o

&or exemplo, numa f'brica, uma bomba falhou e tem que ser trocada por uma nova A bomba foi
instalada h' () anos e as pessoas que fi"eram o trabalho se aposentaram h' muito tempo A empresa
que vendia essas bombas faliu A f'brica tem que achar uma nova bomba, com exatamente as
mesmas caracter$sticas, ou se*a, ela tem que ser montada sobre a tubula%o existente (dimens+es
definidas, como a bomba est' fixada, volume ocupado pela bomba, etc! que s%o caracter$sticas
f'ceis de descobrir, mas podem tambm existir outras menos evidentes (a bomba tem que fornecer
um dbito definido, ela precisa respeitar algumas restri+es desconhecidas! ,odas essas
caracter$sticas da bomba podem ser importante ou n%o, a f'brica tem que descobrir isso antes de
comprar uma nova

/or 0ue a Engenharia Reversa na Inform1tica2
-rgani"a+es trabalham com sistemas apresentando problemas tais como.

- sistema foi iniciado h' muitos anos (at (/ anos atr's!

- sistema tem pouca documenta%o e ela n%o foi atuali"ada - que quer di"er que a
documenta%o descreve um estado anterior do sistema, mas n%o a configura%o atual

As pessoas que criaram o sistema deixaram a empresa, ningum pode explicar muitas
decis+es que foram tomadas

Algumas partes do sistema foram implementadas com mtodos 0estranhos1 ou sem mtodo
nenhum

2uitos programadores diferentes implementaram pequenas partes do sistema 3ada um
usava um mtodo e um estilo particular de programa%o

- sistema implementado numa linguagem de programa%o antiga (3obol, #ortran, A&4,
etc! para a qual existem poucas ferramentas

4
Engenharia Reversa
2as o sistema tem que evoluir.

&ara ser adaptado a novos computadores (mais barato, mais r'pido ou porque ningum
mantm mais os velhos!

&ara ser adaptado a novos softwares (novas bibliotecas, novas linguagem de programa%o,
novas ferramentas!

&ara ser adaptado a novas regras (troca de moeda em todos os pa$ses da Europa!

&ara disponibili"ar novas funcionalidades que outras empresas usam

&ara corrigir bugs (bug do ano (///!

A engenharia reversa pode ser de programas como nos exemplos acima ou de dados &or exemplo,
se queremos construir um editor de texto compat$vel com o 2567ord, vamos ter que entender a
representa%o que ele usa para ler os documentos 2567ord ou poder salvar documentos nesse
formato -utro exemplo de banco de dados, ou se*a, para passar de um banco de dados relacional
a um banco de dados orientado a ob*eto

&ara software, restri+es f$sicas como as dimens+es da tubula%o sobre a qual a bomba tem que ser
montada, s%o restri+es de interface - velho programa tinha uma interface espec$fica, e costumava
ser chamado de maneira bem definida - novo programa tem que respeitar a mesma interface As
outras caracter$sticas do programa v%o se tornar requisitos n%o funcionais para o novo programa

8 importante observar que esses problemas n%o s%o raros, pelo contr'rio, s%o muito freq9entes

E3em#(os de Engenharia Reversa
+ora da )omputao
Tupolev Tu-4: Em :;<), durante a segunda guerra mundial, tr=s bombardeiros americanos modelo
>6(; foram forados a aterrissar em territ?rio russo -s soviticos os desmontaram e estudaram
@saram a engenharia reversa para copiar o bombardeiro nos m$nimos detalhes - resultado foi o
bombardeiro ,upolev ,u6< que voou pela primeira ve" em :; de maio de :;<A A produ%o em
srie do bombardeiro comeou neste mesmo ano
5
Engenharia Reversa
,a )omputao

IBM-PC compatvel: A B>2 abriu m%o da patente de sua plataforma, deixando o caminho livre
para qualquer um produ"ir uma maquina que fosse compat$vel com o B>26&3 Assim surgiram
v'rios clones do B>26&3

Samba: 5oftware que permite sistemas que n%o est%o rodando o 2icrosoft 7indows a compartilhar
arquivos com sistemas que est%o A engenharia reversa foi utili"ada para descobrir como o
compartilhamento de arquivos do 7indows funcionava, para que ent%o computadores que n%o
estivessem com a plataforma 7indows pudessem emula a mesma

Wine: &rograma que funciona como a A&B do 7indows &ermite executar aplicativos
desenvolvidos para 7indows C:D, ;D, E, e (//x no FE@G4inux

OpenOice!o"#: 8 um con*unto de aplicativos em -pen5ource (c?digo aberto! Est' dispon$vel
para diferentes plataformas. incluindo 2icrosoft 7indows, @nix, 5olaris, 4inux e 2ac -5 D A
5uite compat$vel com o 2icrosoft -ffice
Reengenharia
A engenharia reversa consiste em apenas analisar o sistema ou a ferramenta para criar uma
representa%o dela H' a Reengenharia vai alm Analisa6se o pro*eto, cria6se uma representa%o do
mesmo e, atravs dessa representa%o, monta6se uma nova estrutura que funcione Exatamente como
a primeira, mas que n%o se*a meramente uma c?pia dela

$
Engenharia Reversa
+efini4o de engenharia reversa de soft5are
A engenharia reversa de software consiste em analisar um determinado sistema para criar
representaes do prprio em um nvel mais alto de abstrao.
Tambm pode ser encarada como Voltar atrs no ciclo de desenvolvimento do software.

Ea pr'tica, existem dois tipos de engenharia reversa de software.
Eo primeiro caso, o c?digo6fonte *' est' dispon$vel, mas os aspectos mais globais, talve"
documenta%o escassa ou n%o v'lida, t=m que ser descobertos
Eo segundo caso o c?digo6fonte do software n%o est' dispon$vel, e todos os esforos para
descobrir uma poss$vel fonte do c?digo para o software s%o considerados como engenharia
reversa
->5. As pessoas que trabalham com engenharia reversa de software est%o mais familiari"adas com
o segundo caso, chegando at a desconsiderar o primeiro
2. T67)I7"8 +E E)9E):"RI" RE;ER8" 8E< *
7=+I9*->*)TE

Engenharia reversa de software pode ser efetuada por v'rios mtodos,r=s grupos principais da
engenharia de software s%o.
%n&li'e (e lu)o (e (a(o': An'lise atravs da observa%o da troca de informa+es que
envolvem 0analisadores de bus1 e 0pacotes de sniffers1 por exemplo, para IouvirI dentro do
bus de um computador ou uma conec%o de rede, revelando o tr'fico de dados IescondidosI
- comportamento dos dados no bus ou na rede podem ent%o ser analisados para produ"ir
uma nova implementa%o do software que imita o mesmo comportamento Bsto
especialmente utili"ado na engenharia reversa de drivers de dispositivos
*e'a''embla": @sando um desassembler, conseguimos obter a linguagem de m'quina
diretamente do programa Este c?digo lido e entendido nos seus pr?prios termos, apenas
com a a*uda de 0mneminics1 da linguagem de m'quina Bsto funciona em qualquer programa
de computador, mas pode levar um bom tempo, especialmente para algum que n%o este*a
acostumado ao c?digo de m'quina
*ecompila+,o: Eeste mtodo utili"a6se um decompilador, um programa que tenta recriar o
c?digo6fonte em uma linguagem de alto n$vel, tendo dispon$vel apenas o c?digo de
m'quina
-
Engenharia Reversa
. T67)I7"8 +E E)9E):"RI" RE;ER8" 7*< *
7=+I9*->*)TE

E3tra4o das Informa?es
- primeiro trabalho que se deve fa"er coletar informa+es sobre o sistema a ser estudado As
atividades da engenharia reversa se fa"em sobre essas informa+es extra$das, mais do que sobre o
pr?prio sistema
As informa+es podem ser extra$das de v'rias fontes. o c?digo fonte, a execu%o, os dados (por
exemplo, em banco de dados!, a 0documenta%o1, ou outras fontes
C.(i#o /an&li'e e't&tica0
A primeira fonte, o c?digo, a mais usada A an'lise do c?digo chamada tambm de an'lise
est'tica (por oposi%o J an'lise dinmica que a execu%o do sistema!

Ela permite extrair as informa+es mais b'sicas do sistema.

Kuais s%o os componentes b'sicos do sistema. arquivos, rotinas, tipos, vari'veis, classes,
etcL

Rela+es de defini%o conectam um componente com seu conteMdo (onde ele se encontra!L

Rela+es de refer=ncia conectam um componente com aqueles que o usam (se uma rotina A
chamar uma outra rotina > A depende de > porque uma modifica%o na defini%o de >
pode ter conseq9=ncias sobre a execu%o de A!

#erramentas para fa"er essa an'lise s%o chamadas de 0parser1 - 0parsing1 a primeira etapa da
compila%o do c?digo fonte &ara fa"er isso, preciso conhecer a sintaxe da linguagem de
programa%o usada
Nependendo das necessidades, pode6se usar parsers espec$ficos que v%o procurar s? um tipo
particular de informa%o &or exemplo, num programa &ascal, podemos extrair o nome de todas as
fun+es definidas
T"ace (e e)ecu+,o /an&li'e (in1mica0
A an'lise est'tica pode extrair muitas informa+es de um programa, mas nem todas &or exemplo,
qual parte de uma instru%o B# realmente usada pode depender dos dados com que o programa foi
chamado &ara descobrir esse tipo de informa%o, precisamos da an'lise dinmica, que consiste em
executar o programa e monitorar os valores das vari'veis, quais fun+es s%o chamadas, etc
2
Engenharia Reversa
*a(o'
-s bancos de dados podem ser usados como fonte de informa%o para a*udar na engenharia reversa
de um sistema 2as a engenharia reversa de dados tambm um trabalho espec$fico que pode ser
feito independentemente de qualquer sistema que possa manipular esses dados &or exemplo,
poder$amos querer converter um velho banco de dados sobre um 0main frame1 para um banco de
dados relacional e distribu$do sobre v'rios &3s
*ocumenta+,o
3hamamos de documenta%o tudo o que n%o est' usado pelo computador para fa"er funcionar o
sistema, mas se destina aos engenheiros que usam o c?digo. relat?rios, coment'rios no c?digo,
diagramas da an'lise ou do pro*eto, etc

3omo ela se destina aos seres humanos ela de dif$cil de analisar automaticamente A abordagem
mais usada usar as palavras da documenta%o Bsso pode permitir extrair os conceitos importantes
do dom$nio de aplica%o do sistema Esta abordagem est' baseada sobre a suposi%o que os
conceitos importantes aparecem com mais freq9=ncia na documenta%o
Out"a' onte' (e ino"ma+,o
#inalmente, poss$vel usar outras fontes de informa%o &or exemplo, para definir sub6sistemas,
poder$amos procurar quem escreveu cada por%o do c?digo 8 ra"o'vel pensar que se duas partes do
c?digo foram desenvolvidas pela mesma pessoa elas tem maior probabilidade de pertencer ao
mesmo sub6sistema

Tratamento dos >atos
Essas s%o algumas das principais atividades envolvidas na engenharia reversa Essas atividades
usam as informa+es que foram extra$das do sistema &odemos resumir o ob*etivo geral dessas
atividades da seguinte forma. elas tentam abstrair informa+es de mais alto n$vel de abstra%o dos
fatos do sistema - que quer di"er que elas v%o eliminar os inumer'veis detalhes - problema
decidir nessa massa de informa+es o que importante ou n%o
%nomalia' no c.(i#o
Eum software legado, o c?digo pode conter v'rias anomalias, como partes do programa que nunca
podem ser executadas (c?digo morto! e trechos de c?digo que foram copiados e levemente
modificados Essas anomalias complicam o c?digo inutilmente, fa"endo ele mais longo do que
deveria ser e multiplicando as coisas que um programador tem que estudar e entender
&ara resolver esse problema podemos deletar o c?digo morto, e no caso dos clones podemos
modificar o c?digo para suprimir6los ou ent%o comentar o c?digo di"endo que existem clones
3
Engenharia Reversa
4ncap'ulamento
- encapsulamento mais uma tcnica de re6engenharia do que de engenharia reversa Em ve" de
reestruturar um sistema, ela prop+e esconder o velho c?digo dentro de uma nova camada
5Slicin#6
05licing1 (fatiar! uma tcnica de decomposi%o do c?digo de acordo com a utili"a%o das
vari'veis - slicing de uma parte do c?digo consiste em extrair dela todas as instru+es que t=m
uma influ=ncia sobre o valor de uma vari'vel definida a um ponto definido do c?digo

Bsso pode a*udar na locali"a%o de um bug (erro no valor da vari'vel!, limitando a pesquisa nas
Mnicas instru+es realmente necess'rias
/7e-0Mo(ula"i8a+,o
A (re6!modulari"a%o a decomposi%o de um con*unto de componentes de software em sub6partes
(os m?dulos! Em engenharia de software, normalmente, se espera que os m?dulos tenham uma
forte coes%o interna e um pequeno acoplamento com o exterior

Essa atividade de agrupar arquivos em sub6sistema n%o trivial @m sistema legado pode ser
composto de milhares de arquivos, em v'rias linguagens de programa%o (por exemplo. uma
linguagem procedural, assembler, dados e alguns 0scripts1 para compila+es e execu+es!

&ara agrupar os componentes s%o utili"ados algoritmos que 0medem as distancias1 entre os
componentes com base em informa+es extra$das do sistema
Definio de mdulos a partir de informaes de incluso entre arquivos.
19
Engenharia Reversa
&orm eles apresentam dois problemas principais.

- resultado pode ser dif$cil de entenderL

E%o h' nada m'gico neles Eles agrupam todos os componentes segundo algumas restri+es
5e as restri+es forem erradas, o resultado tambm ser'

- resultado desta tcnica globalmente bom 2as sempre h' detalhes errados em alguns m?dulos
Esses algoritmos s%o bons quando existem muitos componentes para tratar e como uma primeira
abordagem para desbravar o sistema
7econ:ecimento (e Clic:;'
@m 0clich=1 um padr%o que descreve uma maneira geral de implementar um conceito de
programa%o A atividade de reconhecimento de clich=s trabalha com um banco de clich=s e
procura esses clich=s no c?digo A idia que um clich= implementado com v'rias linhas de
c?digo Reconhecer um clich= pode simplificar o c?digo porque isso vai substituir um s? conceito a
essas linhas

- reconhecimento de clich= sofre de v'rias dificuldades.

3onstru%o do banco de clich=sL

Nualidade, precis%o e cobertura (a descri%o do clich= deve ser geral porm corre6se o risco
de ocorrerem falso6positivos!L

,empo de execu%oL

3lich=s deslocali"ados ou interligados (podem existir outras instru+es entre as que
implementam o clich= ou dois clich=s cu*as instru+es est%o misturadas!

11
Engenharia Reversa
4. "8/E7T*8 $E9"I8
$eis e "cordos
A engenharia reversa pode tambm gerar problemas de legalidade, como uma empresa querendo
criar uma c?pia de um produto que vende bem Eo entanto a quest%o legal depende das leis de cada
pa$s E, mesmo assim, ainda existem pa$ses que n%o possuem leis espec$ficas sobre o assunto
@ma das leis mais conhecidas o 0Nigital 2illenium 3opOright Act1 dos Estados @nidos,
aprovado em :;;P que, entre v'rias medidas para proteger direitos autorais na inform'tica, tambm
fa" restri+es em rela%o J engenharia reversa 5? permitida para fins de analisar compatibilidade
com outros softwares eGou hardware

Ea @ni%o Europia, o 0E@ 3opOright Nirective1, de (//:, similar ao 0Nigital 2illenium
3opOright Acts1, porm n%o t%o restritiva 5? s%o feitas restri+es caso o ob*etivo final da
engenharia reversa se*a a c?pia de algum programa ou quebra de patente com ob*etivo de lucro
3aso se*a pra fins acad=micos ou de compatibilidade, J princ$pio n%o existem restri+es
Ea su$a, a lei a respeito do assunto bastante curiosa e, de certo modo, polemica A 4ei 5u$a de
3oncorr=ncia Nesleal de :;PQ exige dos competidores a reali"a%o de investimentos em engenharia
reversa mesmo quando a tecnologia n%o se*a secreta -s tribunais su$os, porm, t=m re*eitado ou
limitado severamente a aplica%o de tal norma, pela inexist=ncia de pra"o e limites

Eo Hap%o, a 4ei Haponesa de 3oncorr=ncia Nesleal de :;;C pro$be a imita%o servil, mesmo no caso
de produtos n%o patenteados, nem protegidos por direitos autorais A lei *aponesa imp+e limites
claros J aplica%o da norma de apropria%o il$cita. o 0lead time1 vigora apenas por tr=s anosL n%o se
protegem as idias e os conceitos tcnicosL e ressalva6se o caso de modifica+es ou aperfeioamento
tcnico efetuado pelo competidor com base no item copiadoL a necessidade de padroni"a%o e
compatibili"a%o de produtos e o uso de elementos de car'ter estritamente funcional -u se*a, a
proibi%o de imita%o n%o impede o progresso tcnico, ressalva o dom$nio das patentes para
proteger idias e conceitos, e o interesse social na padroni"a%o e compatibili"a%o industrial

Eo >rasil, n%o existe uma lei espec$fica sobre Engenharia Reversa Apesar disso, quando ocorre
engenharia reversa, costuma6se proceder de duas maneiras. caso a engenharia reversa n%o tenha
como ob*etivo a pirataria ou infra%o de algum direito autoral, n%o considerado crimeL porm caso
contr'rio, a 4ei de 5oftware e tambm de Nireitos Autorais protege seus autores

12
Engenharia Reversa
"(guns 7asos >amosos
Apesar dessas leis, os problemas legais relacionados J engenharia reversa s%o bastante comuns e
dif$ceis de serem resolvidos

Ea Eoruega (um dos pa$ses que permitem engenharia reversa! Hon Hohansen, um *ovem de :Q anos,
desenvolveu um programa capa" de fa"er um computador com 4inux exibir um filme em NRN

- que Hon e alguns colaboradores fi"eram foi descobrir que uma das empresas, a Ding
,echnologies, subsidi'ria da RealEetworSs, n%o mantinha chaves criptografadas Eles entraram no
site da empresa, pegaram as chaves e simplesmente olharam como elas funcionavam 8 como uma
espcie de quebra6cabeas, onde o que precisa ser feito estabelecer correla+es entre s$mbolos A
chave criptogr'fica do NRN tem a extens%o de cinco bOtes, o que torna a matem'tica envolvida
nisso bem simples 3omo as outras chaves das empresas concorrentes tambm s%o parecidas, ele
ainda adivinhou algumas chaves diferentes das da Ding Bsso fa" com que o Necoded6355, nome
dado ao seu programa, possa rastrear uma chave adequada entre algumas que ele entende, ou se*a,
mesmo que os discos de NRN daqui para frente n%o possuam a chave Ding, o programa ainda
funcionar'

Ele foi acusado de Ifacilitar a piratariaI 5egundo os advogados que o acusam, Hon teria criado um
software que permite aos usu'rios fa"er e distribuir c?pias digitais de filmes em NRN 5eu
programa permitiria que o arquivo que contm o filme fosse copiado por um microcomputador
caseiro Hon est' sendo processado por autoridades norueguesas do N-E3 (Nepartamento
Eoruegu=s de 3rimes EconTmicos! e pela 2&AA (2otion &ictures Association of America!,
entidade que representa as sete maiores distribuidoras de filmes nos E@A. @niversal 3itO 5tudios
lnc, &aramount &ictures 3orporation, 2etro6Foldwin62aOer 5tudios lnc, ,ristar &ictures lnc,
3olumbia &ictures lnc, ,ime 7arner Entertainment 3o, NisneO Enterprises lnc e ,wentieth
3enturO #ox #ilm 3o

- caso 4otus Nevelopment 3orp vs >orland Bnternational foi uma disputa *udicial entre duas
empresas produtoras de 5oftware A 4otus produ"ia o 4otus :6(6C, e a >orland, o Kuattro &ro A
>orland produ"iu seu programa de computador com a interface id=ntica ao da 4otus, de maneira
que os usu'rios da 4otus :6(6C pudessem usar o Kuattro &ro sem dificuldades A 4otus entrou com
a%o em face da >orland por infra%o de 3opOright Frande parte da controvrsia foi a respeito da
possibilidade de se proteger pelo direto do autor a mera interface do programa &or fim a decis%o
final achou IabsurdoI sugerir que Ise algum fa" uso de v'rios programas diferentes, se*a forado a
aprender como efetuar cada a mesma opera%o de maneiras diferentes em cada programa utili"adoI
A corte decidiu que, se uma empresa atinge um monop?lio, por conseq9=ncia a maioria do mercado
fica bem adaptada J interface de seu programa Nesse modo, *usto que um competidor utili"e a
mesma interface como meio de concorr=ncia
13
Engenharia Reversa
%. &i'(iografia
Eicolas Anquetil Uomepage
http-..!!!/uc0/0r.uc0tic.mgcti.paginapessoalprof.,icolas.Disciplinas.RevEng.index/html
7iSipedia
!!!/!i1ipedia/org
NRN e 4inux. liberdade na era digital
http-..!!!/comciencia/0r.reportagens.softliv.softliv'/html
4imita+es ao direito do autor na lei brasileira, c?pia privada e engenharia reversa de
software
http-..!!!/direitonet/com/0r.artigos.x.'%.2#.'%2#.
Bmplementing the E@ 3opOright Nirective
!!!/fipr/org.cop3right.guide.eucd4guide/pdf
,he Nigital 2illlenium 3opOright Act of :;;P
!!!/cop3right/gov.legislation.dmca/pdf
14

Você também pode gostar