desmontaje de un exe

Upload: anon734438814

Post on 07-Jul-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 Desmontaje de Un Exe

    1/18

    Desmontaje, descompilación y modifcar los ejecutables

    07 de marzo, 2013Leave un commentGo a los comentarios

    mail

    La motivación para escribir

    !omo desarrolladores pro"esionales, creamos productos# $onemos en pr%cticaideas, &ue por lo 'eneral son impulsados desde al'(n antojo de ne'ocios para

    su aceptación en el mercado mundial, de su 'rupo objetivo# )ratamos de

    o"recer soluciones ele'antes, r%pidos y fables y, sinceramente, no nos 'usta

    cuando al'uien utilice nuestro trabajo sin por lo menos decir *'racias, +as

    realmente +izo una 'ran cosa*# s por eso &ue tenemos &ue prote'er nuestro

    trabajo# para +acer eso, debemos ser conscientes de los vectores comunes

    usados por los crac-ers para +ac-ear nuestro so"t.are#

    n este art/culo, voy a mostrar cómo desmontar y descompilar ejecutable pura

    escrito en ! , entre otras cosas interesantes relacionadas con entornos

    'estionados y no 'estionados#

    n primer lu'ar, vamos a necesitar un poco de una teor/a as/ &ue realmente

    podemos entender lo &ue estamos +aciendo y por &u#

     

    Di"erencia entre las bibliotecas est%ticas y din%micas

    istóricamente, las bibliotecas est%ticas son el primer tipo de bibliotecas en

    aparecer# n indo.s puedes encontrarlos por las e4tensiones #lib y #dll# La

  • 8/18/2019 Desmontaje de Un Exe

    2/18

    principal di"erencia entre la est%tica y las librer/as din%micas es &ue la

    biblioteca est%tica est% incrustado directamente en el ejecutable, aumentando

    as/ su tama5o# La biblioteca din%mica, por otro lado, es un arc+ivo separado

    &ue car'a una ima'en di"erente de s/ mismo en la memoria cada vez &ue se

    llama a partir de un pro'rama# La dll es uno, pero la ima'en es di"erente y de

    esta manera se evitan los problemas concurrentes entre procesos# stotambin permite actualizaciones m%s manejables, pero implica una

    de'radación del rendimiento li'ero, &ue no se considera un 'ran problema#

    n 'eneral, las bibliotecas din%micas son el en"o&ue pre"erido para

    aplicaciones de construcción# 6ncluso en las (ltimas versiones de isual 8tudio

    no +ay nin'una opción para crear una biblioteca est%tica9 por de"ecto todas las

    bibliotecas se consideran din%mico# 8in embar'o, todav/a es posible crear

    bibliotecas est%ticamente enlazados a travs del entorno de consola#

     

    Los re'istros de la !$:

    Los re'istros de la !$: son la memoria m%s r%pida ubicado en la propia !$:#

    ;%sicamente, se utilizan por cada baja < =ivel de operación, son el

    almacenamiento de datos s(per r%pida del procesador# $ara ar&uitecturas 4>?

    por lo 'eneral +ay > re'istros lar'os de 32 bits, 2 de los cuales tienen elpuntero base y el puntero de pila &ue se utilizan para la nave'ación entre las

    instrucciones# Los re'istros son incluso m%s r%pido &ue la @AB est%tica C8@AB,

    conocida como la cac+ y, por supuesto, la @AB din%mica#

    re'istros dia'rama

     

    @%pida visión 'eneral de la len'ua Asamblea

    $ara este art/culo tenemos &ue saber al'unas cosas b%sicas sobre el len'uaje

    ensamblador para &ue podamos comprender realmente lo &ue estamos

    +aciendo# l len'uaje ensamblador es estructurado y se basa en instrucciones

    muy primitivos, &ue se dividen en los si'uientes tipos 'enerales Cvoy a

    describir sólo las operaciones b%sicasE

  • 8/18/2019 Desmontaje de Un Exe

    3/18

    6nstrucciones de movimiento de datos

    mov < se usa para copiar datos desde una clula a otra, entre los re'istros, o

    entre un re'istro y una celda de la memoria

    pus+ F pop < "unciona en la pila de memoria compatible

    6nstrucciones aritmticas

    a5adir F sub F inc < operaciones aritmticas# $uede "uncionar con constantes,

    re'istros o clulas de memoria

    6nstrucciones de ujo de control

     jmp < salto a la eti&ueta o una clula en la memoria

     jb < salto si se cumple la condición

     je < salto al i'ual

     H= < salto cuando no i'ual

     jz < saltar al (ltimo resultado "ue cero j' < salto cuando mayor &ue

     HG < salto cuando es mayor o i'ual &ue

     jl < salto cuando menos de

     HL < saltar al menor o i'ual a

    cmp < comparar los valores de los dos operandos especifcados

    llamar F ret < estos dos implementar la llamada de rutina y la de re'reso

    Las instrucciones de ujo de control son lo &ue m%s nos interesa a&u/# $ara ver

    un tutorial completo sobre el len'uaje ensamblador 4>?, consulte este art/culo#

     

  • 8/18/2019 Desmontaje de Un Exe

    4/18

    Desmontaje y modifcación de un ! ejecutable

    $ara nuestro ejemplo +e creado una sencilla aplicación ! con F 8 b%sica#

    1

    2

    3

    I

    J?

    7

    >

    K

    10

    11

    12

    13

    1I

    1J

    1?

    17

    1>

    1K

    20

    21

  • 8/18/2019 Desmontaje de Un Exe

    5/18

    22

    23

    2I

    2J

    2?

    27

    2>

    2K

    30

    3132

    33

    3I

    3J

    3?

    37

    include *stda"4#+*

    include MiostreamN

    include MsstreamN

     

    usin' namespace std9

     

    void e4ecute C

    O

      n(meros de cuerda9

      int bode'a9

  • 8/18/2019 Desmontaje de Un Exe

    6/18

     

    para C99

      O

      cout MM *6ntroduzca el códi'oE P n*9

      'etline Ccin, n(meros9

     

    si Cn(merosQ R *>2?3I*

      O

      cout MM *# P n6ntente nuevo P n*9

      S  m%s

      O

      cout MM *!ódi'o aceptadas*9

     

    descanso9

      S

      S

     

    cin NN sostener9

    S

     

    int tmain Cint ar'c, T)!A@ U ar'v VW

    O

      e4ecute C9

     

    return 09

  • 8/18/2019 Desmontaje de Un Exe

    7/18

    S

    amos a tener &ue desmontar, depuración y, opcionalmente, descompilar

    nuestro ejemplo# Descar'ar las si'uientes +erramientas &ue nos ayudar%n a

    +acer esoE

    XllyDb'

    6DA

    e compilado este ejemplo &ue se puede descar'ar desde a&u/# !uando

    empezamos a ella vemos la si'uiente aplicación de consola simpleE

    descompilación

  • 8/18/2019 Desmontaje de Un Exe

    8/18

    Depurar el ejecutable

    6nicie el depurador XllyDb' Ccon privile'ios de administrador y abra el e4e#

    C!lic- para a'randar

    XllyDb'

  • 8/18/2019 Desmontaje de Un Exe

    9/18

     )omemos el jb en *00D?13AI*, +a'a clic dos veces y cambiar la dirección de

    memoria de destino a *00D?13!7* < el &ue justo antes del *!ódi'o aceptadas*

    de te4to A8!66, lo &ue obviamente se abre un arroyo#

    $ara 'uardarlo, +a'a clic derec+o en la ventana de reunión y de prensa *!opiar

    al ejecutable*

  • 8/18/2019 Desmontaje de Un Exe

    10/18

    Lo &ue 'enera es pseudo códi'o !# )e voy a ense5ar la salida del pro'rama de

    ejemplo pe&ue5oE

    1

    2

    3

    I

    J

    ?

    7

    >

    K

    10

    11

    12

    13

    1I

    1J

    1?

    17

    1>

    1K

    20

    21

    22

    23

  • 8/18/2019 Desmontaje de Un Exe

    11/18

    2I

    2J

    2?

    27

    2>

    2K

    30

    31

    32

    333I

    3J

    3?

    37

    3>

    3K

    I0

    I1

    I2

    I3

    II

    IJ

    I?

    I7

    I>

    IK

  • 8/18/2019 Desmontaje de Un Exe

    12/18

    J0

    J1

    J2

    J3

    JI

    JJ

    J?

    J7

    J>

    JK?0

    ?1

    ?2

    ?3

      O

      stdTToperator TTT stdTTc+arTtraitsTc+arT CstdTTcout, *$or "avor introduzca el

    códi'oE P n*9

      v1 R stdTTbasicTiosTc+arTstdTTc+arTtraitsTc+ar TTTT ampliar CCT DX@D

    stdTTcin CTDX@D U Cy stdTTcin 1, 109

      stdTT'etlineTc+arTstdTTc+arTtraitsTc+arTTstdTTallocatorTc+arT Cv19

      v0 R Cint U y v139

      si Cv1JN R 0410

      v0 R v139

      v2 R J9

      si Cv1I MJ

      v2 R v1I9

      i" CQ v2

  • 8/18/2019 Desmontaje de Un Exe

    13/18

      Goto LA;LT219

      v3 R Cint *>2?3I*9

      vJ R Cunsi'ned int v2 MI9

      vI R v2 < I9

      si CvJ

      O

    LA;LT10E

      si CvI RR

  • 8/18/2019 Desmontaje de Un Exe

    14/18

      ]] IQ R

  • 8/18/2019 Desmontaje de Un Exe

    15/18

    S

    As/, podemos descomponer una ima'en nativa en un códi'o "uente

    comprensibleY Depende de su idea de *comprensible*# :sted tiene &ue dedicar

    muc+o tiempo y +ay &ue poseer un conocimiento serio de la A$6 para el uso por

    el sistema de operación, junto con la comprensión de la sinta4is de ! y de la

    Asamblea#

     

    Aplicaciones Decompilin' escritas en entornos administrados

    Aplicaciones #=et Decompilin' tambin se +ace con depuradores y

    descompiladores para #=et como reector, por ejemplo C&ue es en realidad

    pa'ados por al'(n tiempo en#

    $ero el e4e o dll &ue se ve en el escritorio es, no códi'o binario intermedio

    Csuponiendo &ue no utiliza =Gen# Aplicaciones descompilación ! es di"/cil

    por&ue el compilador produce primer códi'o de len'uaje ensamblador

    orientado a la ar&uitectura espec/fca del procesador, y al lado del ensamblador

    obtiene ese códi'o y produce la ima'en nativa real# como +emos visto,

    códi'o ensamblador descompilación es di"/cil#

    l B86L, en el otro lado, est% muy cerca de el códi'o "uente real de su

    aplicación, por ejemplo, escrita con ! # $uede utilizar pro'ramas como

    @eector descompilar ellos, junto con al'unos plu'ins para modifcar

    realmente#

     

    As/ &ue en realidad no es tan duro de roer una aplicación

    8/, no lo es# !on la di"erencia de &ue este proceso en una aplicación real ser%

    m%s tiempo# Z8abes una (nica aplicación independiente popular &ue no se +a

  • 8/18/2019 Desmontaje de Un Exe

    16/18

    rotoY s por eso &ue usted necesita para pensar en mejores "ormas de prote'er

    su so"t.are# ntender una cosa simpleE

    !ada aplicación puede ser roto, si usted tiene acceso a su ima'en materna, al

    i'ual &ue cual&uier contrase5a de e&uipo puede romperse, si tiene acceso"/sico a la m%&uina#

    $or supuesto, +ay tcnicas &ue nos permite reducir la velocidad por un

    atacante, &ue podr/a o no ser sufciente# $ero *desaceleración* no si'nifca *la

    prevención*, y eso es un tema de otro art/culo#

     

    so es de mi relación con el tema de la descompilación, espero &ue +ayan

    aprendido al'o nuevo +oy y, con suerte, este conocimiento le ayudar% a

    prote'er mejor su so"t.are# !onoce a tu enemi'o antes de ir a la batalla#

    Debido a &ue es la batalla por su propio tiempo#

    8obre el autorE _osta ristov C3I mensajes

    olaQ Bi nombre es _osta ristov y actualmente vivo en Londres, 6n'laterra# e

    estado trabajando como in'eniero de so"t.are durante los (ltimos ? a5os en

    di"erentes proyectos móviles, de escritorio y de )6 .eb# mpec este blo' +ace

    casi un a5o con la idea de ayudar a los desarrolladores de todo el mundo en su

    d/a a d/a las tareas de pro'ramación, el intercambio de conocimientos sobre

    diversos temas# 8i usted encuentra mis art/culos interesantes y &uieres saber

    m%s acerca de m/, no dude en ponerse en contacto conmi'o a travs de los

    v/nculos sociales de abajo# 9

    Autor 6n"o

     

    Art/culos @elacionadosE

  • 8/18/2019 Desmontaje de Un Exe

    17/18

    l proceso de compilación en ! , Hava y #=et

    Al i'ual &ue el art/culoY !omp%rteloQ 9

     )utorialE !reación de un sitio .eb est%tico dición del arc+ivo +osts en indo.s

    7

    !omentarios CI> Dejar un comentario

    Dimitar

    07 de marzo 2013 a las 20EI2 ] 1 @esponder ] !itar

    Gran art/culo, muy (til para todos los desarrolladores de so"t.are# Gracias por

    la publicacion#

    _osta ristov

    31 de mayo 2013 a las 1KE1? ] 2 @esponder ] !itarola Dimitar,

    Be ale'ro de &ue te 'uste# 9 8i usted tiene al'unas notas o recomendaciones,

    no dude en escribirlos#

    olodymyr

    17 de junio 2013 a las 1KE32 ] 3 @esponder ] !itar

    sto es e4actamente lo &ue estaba buscando# Z!u%l es el mejor so"t.are Fpr%ctica por a+/ descompilar F desmontar un ejecutableY !u%l usasY

    _osta ristov

    22 de junio 2013 a las 1>E31 ] I @esponder ] !itar

  • 8/18/2019 Desmontaje de Un Exe

    18/18

    ola olodymyr,

    Depende de la unidad de compilación# 8i se trata de Hava F #=et &ue muy

    probablemente ser% de códi'o de bytes F B86L por lo &ue ser% muy "%cil de

    descomponer, a menos o"uscado# $uede utilizar +erramientas como reector

    para #=et# 8i se trata de ! F ! , XllyDb' y la A6\ son uno de los mejores, sin

    embar'o, usted no tiene un montón de opciones a&u/#

    8aludos,

    _osta

    Alireza

    11 de julio 2013 a las 0KE3? ] J @esponder ] !itar

    ola &uerido

     )en'o un arc+ivo ejecutable con "oto y ten'o &ue salvar a esta "oto en la $! por

    "avor me ayude

    =otaE e4e crear por "oto delu4e

    _osta ristov

    11 de julio 2013 a las 12EJ2 ] ? @esponder ] !itar

    ola Alireza,

    Los mtodos &ue +e descrito en este tutorial son un poco bajo nivel de bits

    para su tarea# 8upon'o &ue est%s +ablando $ictures)o4e lujoY

    n ese caso, usted probablemente +a intentado utilizar el mismo pro'rama

    para e4traer las "otos# )ienes dos opcionesE

    1# Descar'ar esta +erramienta y probarlo en el ejecutable con las im%'enes

    +ttpEFF...#picturestoe4e#comF"orumsFinde4#p+pY

    appRcore^moduleRattac+^sectionRattac+^attac+TidR3?JJ

    2# ;asta con abrir la presentación en pantalla completa y +acer una captura de

    pantalla de la pantalla# A continuación, utilice pintura para pe'arlo# s posible

    &ue ten'a al'una cualidad perdió, pero depende de la propia ima'en#

    ;uena suerte