tutorial 1 - reverse engineering.pdf

Upload: infptavares

Post on 04-Jun-2018

242 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/13/2019 Tutorial 1 - Reverse Engineering.pdf

    1/8

    Carssimos leitores, o presente tutorial o primeiro sobre engenharia reversa no blog. umexerccio bastante simples e introdutrio ao tema. No sero abordados detalhes em demasia, vistoser um exerccio de grau fcil. material usado no tutorial uma aplica!o programada na linguagem C. "sta aplica!o consistenum ficheiro executvel #EXE$ %ue permite efetuar opera!&es de soma #calculadora de somar$.

    'penas so permitidas opera!&es com nmeros inteiros iguais ou menores ao valor inteiro 4 nasua verso experimental #trial$. (ara efetuar clculos com valores superiores a 4 necessrio ter aaplica!olicenciada.

    ob)etivo ser ultrapassar esta limita!o atravs da anlise do cdigo assembly do executvel.Convm lembrar %ue o artigo sobre *Introduo ao Assembly* disponnvel no blog imprescindvel para este e os restantes tutoriais do tema. # link no blogpara o tutorial oseguinte+ http+infptavares.blogspot.pt-/0/-introducao1ao1assembl2.html.

    -Ferramentas de Trabalho

    1Aplicao#app.exe$ + "sta a aplica!o de trabalho. 3a!a downloadda respetiva.

    1llydbg+ "sta ferramenta um debbugger %ue ser necessrio para interpretar o executvel eefetuar altera!&es no cdigo assembly do mesmo. uma ferramenta bastante completa dedisassemblere debugger.

    - !ue "# e como se $a% um crack&

    Crackarumsoftware ou uma aplica!o no mais do %ue modificar o cdigo binrio da aplica!opara causar ou evitar procedimentos na sua execu!o. 4sto conseguido atravs de engenharia

    reversa do cdigo do programa compilado, utili5ando um debuggercomo o Ollydbgpara atingirdeterminada fun!o ou sub1rotina %ue possu o mtodo de prote!o do cdigo da aplica!o. binrio ento modificado usando o debuggerou um editor hexadecimal, para substitui!o daramifica!o do programa atravs do seu complemento ou atravs de um opcodeNOPpara saltar ouexecutar uma fun!o ou sub1rotina especifica.

    cdigo da aplica!o %ue pretendido crackar o seguinte, compilado noDevC++.

    http://infptavares.blogspot.pt/2013/12/introducao-ao-assembly.htmlhttp://infptavares.blogspot.pt/2013/12/introducao-ao-assembly.html
  • 8/13/2019 Tutorial 1 - Reverse Engineering.pdf

    2/8

    Como possvel perceber este o cdigo %ue d origem ao executvel a analisar. Nos prximostutoriais no haver acesso ao cdigo1fonte do executvel, mas como importante perceber comoas instru!&es assemblyse relacionam com as instru!&es de cdigo, este disponibili5ado.

    3a5endo uma prvia e rpida anlise ao cdigo, possvel visuali5ar %ue possu uma instru!ocondicional #IF$. 6e as variaveis num1e num2forem maiores %ue o valor inteiro 4, a aplica!o

    dispara um alerta *A verso trial apenas suporta nmeros menores !ue 4'* e a execu!o damesma terminada. Caso contrrio, a soma consolidada e o resultado apresentado na )anela emexecu!o. "m seguida, segue uma imagem ilustrando a sua execu!o via linha de comandos#cmd.exe$.

    Na imagem acima so apresentados os dois cenrios possveis+

    (' 6oma entre os valores #num1e num$ menores %ue 7.)'6e um dos valores #num1 ou num$ for maior %ue 7, um alerta disparado e a execu!o

    terminada.

    ob)etivo ultrapassar o cen*rio )e conseguir e$etuar somas entre !uais!uer valores inteiros.+ necess*rio saltar a condio mtodo de verifica!o, neste caso o 43 de compara!o dasvariveis.

  • 8/13/2019 Tutorial 1 - Reverse Engineering.pdf

    3/8

    ,asso (Carregar .load/ o e0ecut*vel no Ollydbg'

    'ps abrir o ficheiro executvel no debugger# possvel arrast1lo$ ser necessrio clicar no butoexecutar, como mostrado na imagem acima. "na %ue confuso, mas calma, nos prximos tutoriaisa coisa vai ficar pior8 No sero explicados todos os mdulos deste debugger, pois eles seroexplicados 9 medida %ue for necessrio.

    ,asso ) ,rocurar porStringsde re$er1ncia'

    (or norma, o primeiro teste %ue se deve fa5er apes!uisa por vari*veis no c2digo. (or ve5es, oexecutvel trs em anexo algumas pistas importantes e %ue a)uda em muito o engenheiro reverso.

    Normalmente, isto acontece em pe%uenas aplica!&es programadas na linguagem C, sem %ual%uertipo de prote!o ou ofusca!o. (ara se proceder com tal pes%uisa, basta seguir o menu como mostraa seguinte imagem.

  • 8/13/2019 Tutorial 1 - Reverse Engineering.pdf

    4/8

    (ara aceder ao seguinte menu necessrio clicar com o boto direito do rato sobre o cdigoassemblye navegar at ao seguinte menu+Search for > All referenced text strings.

    :ma )anela foi aberta pelo debugger, esta contm informa!o sobre as stringsasciiem anexo aocdigo. possvel perceber, %ue aparecem asstringsreferentes 9 mensagem disparada na aplica!o.(or norma, e comum, esta )anela conter imensasstrings devido ao tamanho do exec;tavel e daaplica!o, pois torna1se complicado encontr1las a olho n;, portanto uma solu!o +

    (' 'nalisar a aplica!o #exec;tavel$ , isto , corre1lo, e verificar se algumastring lan!ada. Nestecaso, a aplica!o executada na linha de comandos lan!a a seguite mensagem+ A verso trial apenassuporta nmeros menores !ue 4'

    "ste o tipo de pes%uisa %ue deve ser feito no debugger. (ara tal, basta clicar com o boto direitodo rato sobre a )anela de stringsde re$er1ncia, aceder ao menu, clicar emSearch For ext, edigitar palavras chave #key$ na caixa de texto. Como sabido, a stringalvo contm a palavra

    *trial*.

    Conse%uentemente, aps o cli%ue em 3# astringalvo ser selecionada no debugger.

  • 8/13/2019 Tutorial 1 - Reverse Engineering.pdf

    5/8

  • 8/13/2019 Tutorial 1 - Reverse Engineering.pdf

    6/8

    >oltando ao assembly"uma outra instru!o no ponto - apresentada, fa5 exatamente o mesmo, casoa varivel num2; 4fa5 um salto. "ste salto efetuado para o offset9949()A4 %ue o endere!ocorrespondente 9 mensagem *A verso trial apenas nmeros menores !ue 4'*.

    =ual " a soluo? "fetuar um NOP #ignorar$ aos - !umps. 4sto , a instru!o 5 678Tapp'9949()A4 ser ignorada no cdigo assembly.

    ,asso>NOPno#$"P

    Como mostra a seguinte imagem, necessrio selecionar a instru!o 5 #o !ump$, clicar com oboto direito do rato, aceder a%inarye aplicar oNOP, #Fill &ith NOPs$.

    'ps efetuar a altera!o possvel visuali5ar as seguintes altera!&es, como mostra a imagemabaixo.

    s'um(sforam substitudospor instru!&esNOP)s, basicamente foram ignorados. 4sto fa5 com %uea aplica!o nunca salte para o trecho de cdigo onde terminada a execu!o caso uma das variveisnum1ou num2fossem maiores !ue 4.

  • 8/13/2019 Tutorial 1 - Reverse Engineering.pdf

    7/8

  • 8/13/2019 Tutorial 1 - Reverse Engineering.pdf

    8/8

    (or fim, existem 0 ficheiros, o ficheiro de cdigo1fonte, o ficheiro executvel de teste e o ficheirode teste crackado. 3inali5ando com a execu!o do programa, possvel comprovar %ue foi superadaa verifica!o licen!a da aplica!o, pois ) possvel efetuar opera!&es de soma com n;merosinteiros superior a 7.

    "spero %ue no ha)a d;vidas. 't ao prximo tutorial.

    @oa Continua!o8>iste+ in$ptavares'blogspot'pt '