desmontaje de un exe
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