|
|
|
ESTUDIO COLECTIVO DE DESPROTECCIONES
Última Actualizacion:
25/10/2001
|
|
|
Programa
|
Tag Rename v1.6
|
W95 / W98 / NT
|
Descripción
|
Programa para añadir tags a los mp3
|
Tipo
|
Trial de 30 dias
|
Tipo de Tutorial
|
[X] Original [ ] Adaptación [ ] Aplicación [ ] Traducción
|
Url
|
no la recuerdo ;)
|
Protección
|
Nag Screen. Time Limit 30 Dias,Comprimido con Aspack+Asprotect
|
Dificultad
|
[1] Principiante [2] Amateur [3] Aficionado [4] Profesional [5] Especialista
|
Herramientas
|
SoftIce v3.25, IDA v.4.0, Hex Workshop
|
Objetivo
|
Simular estar registrados.Insertando codigo en el cuerpo de Aspack
|
Cracker
|
Mr.Snow
|
Grupo
|
Whiskey Kon Tekila
|
Fecha
|
8 de Septiembre de 2000
|
INTRODUCCION
|
El Objetivo de este tutorial es mostrar lo duro ke lo
pueden poner algunos PACKERS, o por lo menos intentarlo
ya ke aparentemente alterar el ejecutable para ke reaccione
como un producto registrado no tiene mas dificultad ke
la de conseguir fijar el parche en el mismo ejecutable
. El eskema de proteccion de este programa parece basarse
mas ke nada en el packer utilizado ya ke el autor no parece
haber puesto mucho empeño en el algoritmo de validacion
, el cual solo depende de alterar un simple salto condicional
. Bueno sin mas nos dirijieremos a explorar la victima.....
|
Aproximacion
Facilona |
Ejecutamos el programa y nos aparece la pantallita de bienvenida
, la cual nos recuerda los dias ke nos kedan de evaluacion
.
Pulsamos sobre el boton de registro y rellenamos el
campo de nombre y numero, entramos en Soft Ice y ponemos
un BPX HmemCpy y pulsamos OK.
Apareceremos de nuevo en la pantalla del soft ice ahora
pulsamos unas cuantas veces F12 hasta llegar al codigo del
Tag Rename , una vez en su codigo pulsamos unas cuantas
veces F10 hasta situarnos en el offset 40870e un poco mas
abajo vemos un salto condicional con lo ke suponemos ke
esta sera la rutina validadora , pulsamos F8 y entramos
en la rutina , si seguimos trazando el programa llegaremos
a la conclusion ke todo el tic de la cuestion esta en la
linea 460aac la cual contiene un jz xxxx y si este salto
se cumple se determina ke el programa no esta validado ,
colo lo cual podemos cambiarlo por jnz o nop nop .
Ahora ke sabemos donde esta el offset a cambiar podriamos
pensar ke con solo usar un Proccess Patcher sobraria , bueno
pos probemoslo y nos daremos cuenta de ke tras cargar el
loader nos aparece un bonito ERROR 15 y se cierra el programa.
Buff Ke mal royo parece ser ke el programa detecta las modificaciones
en memoria , tendremos ke usar otro metodo .
|
Se
Complica El Asunto ... |
Bueno inspeccionemos el ejecutable , usando un editor hexadecimal
veremos ke en la cabezera PE del archivo hay una seccion
llamada XXXXX ke seguro ke es donde se aloja el codigo del
desenpaketador. Bueno para ver donde devuelve el packer
el control al programa deveremos ejecutar el programa desde
el principio e ir trazando hasta ver donde llegamos (o usar
IDA para ahorrarnos tiempo) .
Primero usaremos Soft Ice para ojear la zona de batalla
. Como el programa esta comprimido sera muy tipico ke no
podamos parar en el principio del programa usando el Symbol
Loader del Soft Ice , asi ke vamos a usar un pekeño
trukillo:
Usa ProcDump o algun programa parecido para obtener los
datos de la cabecera PE y saber cual es el punto de entrada
del ejecutable , en nuestro caso el Punto de entrada es
57b001.
Ahora ejecuta el Tag & Rename y parate en cualkier
punto de su codigo ( usa los bpx de antes para detenerte
en el codigo) , una vez aki ponemos un BPM en 57b001
x , salimos del programa y kitamos todos los BPX menos el
ke acabamos de poner . Ahora ejecutamos de nuevo y apareceremos
en el punto de entrada.
Una vez aki pulsamos F8 y vamos trazando el programa con
F10 , enseguida veremos ke el programa realiza unos call
y se ejecuta entero , si entramos en estos call pordremos
ver como el programa empieza a dar saltos de arriba para
abajo (estos saltos son solo para despistar) , en vista
de lo visto vamos a usar IDA o podemos acabar dando saltos
al ritmo del soft ice....
Cargamos el Ida Pro y elegimos el Tagrename.exe le damos
a ok y nos informara de ke el segmento de importaciones
esta destruido . Ahora aparecemos en la entrada del programa
si vamos mirando el codigo hacia abajo vemos ke hay mas
de 50 docenas de saltos , A causa de tantos saltos el propio
ida puede ser ke no reconozca ciertas zonas como codigo
, con lo ke tendremos ke decirle ke lo combierta a codigo
para hacer esto solo debemos posicionar el cursor sobre
las ordenes ke no se han desensamblado y pulsar la
tecla C la cual combierte a codigo , si eke es posible ,
si ves ke pulsas la C y no cambia prueba a bajar una linea
mas .
Bueno pues pulsemos la C hasta llegar a la linea 57bc28
, en esta linea es la ke se supone ke se devuelve el control
al programa principal . Volvemos al soft ice y ejecutamos
el programa (recuerda tener el bpm activado) ahora ponemos
un BPX en la linea 57bc28 , y dejamos ke se ejecute el programa
, sin mas retardos apareceremos en esta linea.Pulsamos F10
para ver donde paramos y aparecemos en una funcion del sistema
(localFree) pulsamos F11 para retornar y ............
Arrggggggg ¡¡¡¡ ke es esto , parece
ser ke estamos en una zona de memoria , ke pasa aki .
Pues sin duda esto se pone muy feo , ahora estamos en una
zona de la memoria sin nombre , y para colmo resulta ser
parte del codigo del desenpaketador , ya ke aun no esta
visible la parte del codigo del programa.
Cerremos y volvemos a ejecutar el programa paramos en la
llamada a localFree y si pulsamos f11 aparece de nuevo el
mismo codigo de antes, pero si te fijas el offset es distinto
, lo ke nos complicara mas la cosa a la hora de parchear
el programa.
Bueno como hemos comprobado antes si usamos un procces patcher
se produce un error 15 , para comprobar donde ocurre esto
vamos a poner un BPM en la zona la cual debemos parchear
, BPM 460AAC (pon este bpx cuando te encuentres al principio
del codigo ke se carga en memoria) , dejamos ke se ejecute
el programa y vemos como se detiene , si ahora visualizamos
esa zona de memoria (d 460AAC) veremos como hemos parado
en la zona ke se encarga de descomprimir el verdadero codigo
del programa , si dejamos ke se siga ejecutando veremos
como volvemos a regresar a SI . Hagamos una prueba
vuelve a ajecutar el programa cuando te detengas en el primer
BPM 460aac visualiza esa zona de memoria y cambia el 74=jz
por un 75=jnz y deja ejecutar el programa , pararas de nuevo
en el soft ice ignora esta parada y deja ke se siga ejecutando
el programa , veras como aparece el ERROR 15 .
Recuerda ke seguramente cada vez ke vuelvas a ejecutar
el programa , aunke tengas puestos los BPX o BPM pude ser
ke pase de para para evitar esto usa el comando BPE (Break
Point Edit) y el numero de breackpoint y dale a intro te
aparecera el bpx o bpm ke pusiste vuelve a pulsar intro
y el BreackPoint sera reactivado.
Conclusion , la primera vez ke paramos es cuando se descomprime
el ejecutable , y la segunda vez es cuando se realiza el
checksum ke determina si hemos alterado el programa o no.
Ahora llega el momento de hacer algunas pruebas mas , sabemos
ke el codigo del programa ke tenemos ke alterar no aparece
en el ejecutable , y por otro lado el codigo del packer
es cargado en memoria (offsets arbitrarios) , la solucion
mas facil es la propuesta por MR.Crimson en su tutorial
sobre el AZPR. Crear un THREAD paralelo ke se encargue de
modificar el codigo en el momento oportuno, par ello lo
primero ke necesitamos es espacio en el ejecutable para
codificar nuestro thread. Cargamo a nuestro amigo TOPO seleccionamos
unos 300 bytes y lo pasamos al tag rename , y ..... maldicion
dice ke no puede liberarnos espacio.
Ueno pos nos tocara hacerlo a lo bestia , o añadimos
una nueva seccion ( e incrementamos el tamaño del
ejecutable) , o buscamos rutinas inutiles ke podamos limpiar
, RUTINAS INUTILES eso me suena a JMP aki JMP alla JMP aki_otravez
JMP aka CALL mil_jmp_mas ....
Ya tenemos una zona donde taladrar , en los JMP y encima
despues de todos estos saltos tenemos el retorno al codigo
del packer en memoria por lo ke nos viene ke ni pintao.
Vayamos al IDA y veamos cuantos saltos nos podemos limpiar
y cuantas instrucciones restaurar.
Para limpiar la zona solo tenemos ke limitarnos a llenarla
de 90=NOP y respetar la instrucciones validas como POP EBX
, y supongamos ke necesitamos 500 (1f4h) bytes para nuestra
aplicacion entonces 57bc28-1f4=57ba34 aki sera a partir
de donde debemos rellenar ... usamos ida para ver ke instruccione
restaurar y con nuestro hex editor favorito lo rellenamos
de 90.
Para ahorrarme tiempo he creado un programita en VB ke se
encarga de analizar un fichero de texto y si encuentra una
"j","l",";" o "d" elimina esa linea con lo cual
con coger y copiar en un fichero la zonas ke keremos sacar
las intrucciones y pasarla por el prog te devuelve solo
las instrucciones utiles saltandose los JMP ,DB y LOC_xxxxx.
Una vez limpio estas son las intrucciones ke debemos restaurar
desde 57ba33 a 57bc28:
push eax
call sub_57BA4B
pop eax
pop eax
push edi
push ebx
call sub_57BA7B
pop ebx
pop ebx
push dword ptr [esi+8]
pop dword ptr ss:unk_45BA52[ebp]
push dword ptr ss:unk_45BA52[ebp]
pop ebx
add ebx,edi
push eax
call sub_57BAC2
pop eax
pop eax
push ebx
push ebx
call sub_57BAF2
pop ebx
pop ebx
push eax
call sub_57BB21
pop eax
pop eax
push esi
push ebx
call sub_57BB51
pop ebx
pop ebx
push eax
call sub_57BB80
pop eax
pop eax
push eax
push ebx
call sub_57BBB0
pop ebx
pop ebx
push eax
call sub_57BBDF
pop eax
pop eax
push
dword ptr ss:unk_45C39D[ebp]
push ebx
call sub_57BC14
pop ebx
pop ebx
retn
Como sabras siempre ke se llama a un CALL xxxxx el propio
procesador se encarga de empujar a la pila la direccion de
retorno , es decir ke lo mismo nos da call XXXX ke push ebx
, si te fijas despues de cada call se restaurar 2 veces los
mismos registros y eso es devido a ke ha de eliminar el dato
ke no necesita ke es el punto de retorno despues del call
, ya ke el programa nunca regresa y como hemos visto el ultimo
ret ke tiene nos devuelve a una api , por lo ke la direccion
a esa api es pusheada en la untima dword (linea en rojo).
Pues todo este chorro es igual a este:
push edi
push dword ptr [esi+8]
pop ebx
add ebx,edi
push ebx
push esi
push eax
push dword ptr ss:unk_45C39D[ebp]
= push dword ptr [ebp+45c39d]
retn
Pos nada ya tienes las instrucciones ke has de respetar y
el resto de JMP los puedes limpiar asinke , coge el hexeditor
, situate en la zona a limpiar , rellenala con 90 , y copia
los valores de push u pop correctos.
Ahora ya tenemos nuestro programa con una gran zona toa pa
nosotros . Probemoslo a ver ke tal ..... y ¡arrggg¡
(grito de espanto) . Pos parece ke algo pasa porke el programa
nisikiera se ha ejecutado , ¿tendra algun checksum?
pos fijo , para encontrar el checksum solo tendremos ke poner
un bpm en la zona ke hemos modificado y esperar a ke pare
y localizar la rutina .... bpm 57ba33 rw ...y... pasa de to
el mu kpullo no se ha parado , entonces ¿como demonios
detecta ke lo hemos cambiado , si aparentemente no ha leido
la memoria para comprobarlo? , pos alomejor en vez de leer
la memoria esta leyendo el disco ....
Pues nada un bpx a CreatefileA y esperemos a ver ke pasa ....
Bingooo , parece ke si ke lo hacia de esta manera con lo ke
solo hemos de falsear la comprobacion
pero para eso tendremos ke cazarla porke si te das cuenta
esta comprobacion se realiza desde una zona de memoria ke
como ya dije antes cambia de offset arbitrariamente , ya ke
estas zonas las asigna el sitema para las aplicaciones ke
lo soliciten .
(para insertar el codigo te recomiendo ke trazes el ultimo
salto , en mi caso y si has seguido los pasos anteriores ,
el codigo lo inserto en el offset 57ba36)
Cauando paremos en el BPX CreateFileA pulsamos F11 y aparecera
este codigo:
pop esi <--------- Nosotros
pararemos aki
pop ebx
ret
Trazamos el programa con F10 hasta pasar un par de Ret`s
mas y aparecera algo como esto:
mov eax,[ebp-14] <-------
carga en EAX el checksum calculado
cmp eax,[ebp-10] <-------
y lo compara con el correcto
jz xxxxx
<---- este es el salto condicional a falsear con un simple
jnz
Ahora es cuando surgen algunas complicaciones menores ....
Para poder cambiar este salto primero debemos saber como
localizarlo , y la mejor manera es la siguiente , como hemos
visto antes el ultimo lugar ke podemos establecer el control
es en la zona ke hemos limpiado , y si te fijas en los datos
de la pila (ESP) justo antes del RET vereas ke [esp+4]
y EAX tienen la direccion de memoria en la ke seguira ejecutandose
el programa con lo ke lo unico ke debemos hacer es guardar
este valor y ver a ke relacion se encuentra del salto condicional
del checksum :
Entrada al codigo generado en memoria: 5F53DD
-(restamos)
lugar donde se comprueba el checksum: 5E6C28
-----------------------------------------------------
E7B5
con lo ke tenemos ke si antes de retornar guardamos el valos
de [esp+4] o EAX y aplicamos luego la resta de E7B5 tendremos
sin lugar a fallos el offset donde se hara la comprobacion
, con lo ke en nuestra zona limpia de codigo debemos generar
la primera parte de nuesto THREAD
|
Comienza
El Baile |
Siguiendo el tutorial de MR.Crimson podemos ver como
llamar a apis ke no son cargadas por defecto por el cargador
PE , pero en el caso de este empaketador las llamadas GetProcAdress
y GetModuleHandle si ke son cargadas , para comprobarlo
usa un hex editor y busca estas cadenas , veras como aparecen
, con lo ke se las podemos robar al programa ;)
Pon el Bpm al principio del programa ejecutalo ahora kita
todos los bpx y pon BPX GetModuleHandleA , deja ke se ejecute
el programa y cuado pares pulsa F11 para ver donde aparecemos
, veras algo como esto
0057B02F
lea eax, unk_45C294[ebp]
0057B035
push eax
0057B036
call dword ptr ss:unk_45C3D0[ebp] ; llamada
a GetModuleHandleA
0057B03C
mov dword ptr ss:unk_45C290[ebp],
eax ; EAX tiene el valor del handle al Kernel32.dll
0057B042
mov edi, eax
0057B044
lea ebx, unk_45C2A1[ebp]
En este codigo onbtenemos 2 valores muy interesantes :
en la line 57b036 se llama a la funcion GetModuleHandleA
con lo ke sabemos ke la entrada a esta rutina la podemos encontrar
en [ebp+45c3d0]
y si usas el soft ice , paras en la linea 57b03c y preguntas
ke valor tiene EAX (what eax) veras ke es el Handle a Kernel32.dll
, con lo ke sabemos ke en [ebp+45c290] tenemos el manejador.
Realizamos la misma operacion pero con un Bpx GetProcAdress
y:
0057B04C
call dword ptr ss:unk_45C3CC[ebp] ; ;llamada
a GetProcAddress
0057B052
mov dword ptr ss:unk_45C399[ebp],
eax
0057B058
lea ebx, unk_45C2AC[ebp]
0057B05E
push ebx
Vemos como GetProcAddress se encuantra en [ebp+45c3cc] .
Ahora tenemos todo lo necesario para codificar nuestro Thread
...
Tenemos :
[ebp+45c290] = Handle
de Kernel32.dll
[ebp+45c3cc]= GetProcAddress
[ebp+45c3d0]= GetModuleHandleA
solo nos falta obtener la entrada para IsBadCodePtr , CreateThread
y CloseHandle (ver tutorial sobre el AZPR).
0057BA36 loc_57BA36:
; CODE XREF: sub_57BA1C+14.j
0057BA36
nop
0057BA37
push edi
0057BA38
push dword ptr [esi+8]
0057BA3B
nop
0057BA3C
nop
0057BA3D
nop
0057BA3E
nop ; estos
nops realmente no tendrian ke estar aki , pero para respetar
los offsets he de dejarlos , con unas pekeñas
0057BA3F
nop ; modificaciones
pueden ser eliminados.
0057BA40
nop
0057BA41
nop
0057BA42
nop
0057BA43
nop
0057BA44
nop
0057BA45
nop
0057BA46
nop
0057BA47
pop ebx
0057BA48
add ebx, edi
0057BA4A
push ebx
0057BA4B
push esi
0057BA4C
push eax
0057BA4D
push dword ptr ss:unk_45C39D[ebp]
0057BA53
mov ds:dword_57BA8C, eax
0057BA58
jmp short loc_57BA95
0057BA58 ; ---------------------------------------------------------------------------
0057BA5A aIsbadcodeptr db 'IsBadCodePtr',0
0057BA67 aCreatethread db 'CreateThread',0
0057BA74 aClosehandle
db 'CloseHandle',0
0057BA80 dword_57BA80
dd 00000000h
0057BA84 dword_57BA84
dd 00000000h
0057BA88 dword_57BA88
dd 00000000h
0057BA8C dword_57BA8C dd
00000000h
0057BA90 dword_57BA90
dd 00000000h
0057BA94
db 90h ; É
0057BA95 ; ---------------------------------------------------------------------------
0057BA95
0057BA95 loc_57BA95:
0057BA95
push offset aIsbadcodeptr ; "IsBadCodePtr"
0057BA9A
push dword ptr ss:unk_45C290[ebp]
0057BAA0
call
dword ptr ss:unk_45C3CC[ebp]
0057BAA6
mov ds:dword_57BA80, eax
0057BAAB
push offset aCreatethread ; "CreateThread"
0057BAB0
push dword ptr
ss:unk_45C290[ebp]
0057BAB6
call dword ptr ss:unk_45C3CC[ebp]
0057BABC
mov ds:dword_57BA84, eax
0057BAC1
push offset aClosehandle ; "CloseHandle"
0057BAC6
push dword ptr ss:unk_45C290[ebp]
0057BACC
call
dword ptr ss:unk_45C3CC[ebp]
0057BAD2
mov ds:dword_57BA88, eax
0057BAD7
push offset dword_57BA90
0057BADC
push 20h
0057BADE
push 0
0057BAE0
push offset
loc_57BAF7
0057BAE5
push 0
0057BAE7
push 0
0057BAE9
call ds:dword_57BA84
0057BAEF
push eax
0057BAF0
call ds:dword_57BA88
0057BAF6
retn
0057BAF6 sub_57BA1C
endp ; sp = -40h
0057BAF6
0057BAF7 ; ---------------------------------------------------------------------------
0057BAF7
0057BAF7 loc_57BAF7:
Elimina el checksum ke se encarga de comprobar la integridad
del fichero
0057BAF7
mov edi, ds:dword_57BA8C
0057BAFD
sub edi, 0E7B5h
0057BB03
push edi
0057BB04
call ds:dword_57BA80
0057BB0A
test eax, eax
0057BB0C
jnz short loc_57BAF7
0057BB0E
cmp byte ptr [edi], 74h
0057BB11
jnz short loc_57BAF7
0057BB13
mov byte ptr [edi], 75h
0057BB16
jmp short loc_57BB1C
0057BB16 ; ---------------------------------------------------------------------------
Con este codigo conseguimos anular el checksum ke no nos dejaba
continuar ahora solo debemos centrarnos en parchear el codigo
ke nos da registro en el programa.
Para eso primero deberemos saber en ke momento se realiza
el checksum del codigo ke keremos parchear , y una vez lo
sepamos podremos modificar los bytes necesarios despues de
ke el checksum sea realizado.(ahora me estoy refiriendo al
checksum ke nos saca el bonito mensaje de ERROR 15) .
Ejecuta el programa pon un bpx antes de devolver el control
a la rutina de memoria (bpx 57bbf6) , ahora pon un bpm en
la zona ke debemos parchear (bpm 460aac) , espera a ke pare
2 veces (una descomprime , y la segunda realiza el checksum)
y traza el programa hasta ke veas como compara el numero del
checksum , despues de esa comparacion , podemos alterar el
codigo de donde keramos . en mi caso la zona donde insertar
mi nuevo codigo la calculo de la manera ke hicimos antes para
calcular la zona del salto condifcional despues de la llamada
a createfilea , y obtengo E2CF .
Mi estrategia es muy simple: pretendo insertar en parte del
codigo ke se ejecutara despues del checksum una llamada a
una rutina la cual parchee la zona necesaria para el registro
, sin peligro de checksums porke ya han sido realizados y
restaure las instrucciones ke he kitado para insertar ese
call , luego simplemente retorna y se sigue ejecutando el
programa.
0057BB18
dd 57BB39h ; dword ke apunta
al codigo ke parcheara el registro del programa
y restaurara los datos eliminados para insertar el call
0057BB1C ; ---------------------------------------------------------------------------
0057BB1C
0057BB1C loc_57BB1C:
Parchea el codigo del packer en memoria para ke ejecute
nuestro parche despues de haber realizado el checksum.
0057BB1C
mov edi, ds:dword_57BA8C
0057BB22
sub edi, 0E2CFh
0057BB28
mov dword ptr [edi], 0BB1815FFh
;aki se mueven los bytes de la instruccion call dword
ptr[57bb18]
0057BB2E
mov word ptr [edi+4], 57h
; al codigo del packer en memoria
0057BB34
retn
0057BB34 ; ---------------------------------------------------------------------------
0057BB35
db 90h ; É
0057BB36
db 90h ; É
0057BB37
db 90h ; É
0057BB38
db 90h ; É
0057BB39 ; ---------------------------------------------------------------------------
0057BB39
mov ds:byte_460AAC, 75h
; parcheamos el programa descomprimido
0057BB40
mov ecx, [eax+10h]
; restautamos las instrucciones ke machakemos con el call
0057BB43
mov eax, [ebp+8]
0057BB46
retn
Bufff casi na to lo ke he escrito , Pos ueno esto es todo
amigoosss o casi todo ......
|
IDA
Pro v4.0 colton ke buen amigo.... |
Jeje como aun no me he cansado de escribir ahora os voy
a explicar como podemos usar IDA 4.0 Pro para ensamblar
nuestro programita.
Pero primero veamos unos comandos:
Teclas De Ida:
C
- Combierte los bytes en codigo
D
- Combierte los bytes en datos (1 vez byte,2 veces word,
3 veces dword)
A
- Combierte los bytes en cadenas Ascii (db "hola")
U
- Combierte codigo , datos o ascii en bytes idefinidos
G
- Salta a una zona del programa
E
- Establece el final de una rutina
N
- Cambiar nombres a rutinas , variables ...
;
- Añadir comentarios
asi es como Ida nos puede mostrar unas zonas de codigo
, fijate ke la linea 57ba30 tenemos un salto hacia 57ba36
, lo ke nos indica ke en esa zona continua el codigo ,si
nos situamos en esa linea (57ba36) y pulsamos
la "C" aparecera esto:
Si ahora nos ponemos en la linea donde pone loc_57ba37
y pulsamos la "N" podremos elegir un nombre para ese offset.
Sigamos viendo ke sale :
Si nos situamos en 57ba67 y pulsamos la "A" combertiremos
estos datos en cadens Ascii , y haremos lo mismo en la linea
57ba74 y el resultado sera:
Si ahora intentamos lo mismo en la linea 57ba80 no pasara
nada , probemos con "D" ya ke hay 4 bytes pulsaremos la
"D" 3 veces (dword) y repetimos la operacion con el resto
:
Como veras Ida es muy potente ya ke si nos acostumbramos
a desensamblar con el y a renombrar rutinas es mucho mas
facil el entendimiento del programa.
Tambien puede ser muy util para insertar codigo sin necesisda
de recurrir al soft ice .
Si nos vamos al menu Edit ---> Patch Program ----->
Asemble . podremos insertar codigo donde keramos eso si
recordar siempre poner la h de hexadecimal despues de una
expresion numerica : mov dword ptr[eax],123456h si no nos
dara error , una vez ke tengamos ensambladas las instrucciones
podemos usar el Comando "U" para ver los bytes por los ke
se componen las instrucciones para asi copiarlos con un
Hex Editor en el fichero Victima.
En las opciones de Ida Tenemos la forma en la ke puede
reconocer cadenas ascii y muchas cosas mas pero eso son
palabras mayores , lo ke se de ida es a base de probar con
el , y os recomiendo ke practikeis con el , ya ke aunke
pueda parecer complejo llega a ser extremadamente util.
JEJE Pos ahora si ke creo ke he explicado todo lo ke tenia
ke explicar , sin mas un saludo a todos , y espero ke este
tutorial os sea util , el tutorial es largo pero creo ke
lo he explicado detalladamente , si teneis alguna duda ,
pos ya sabeis Experimentar y PREGUNTAR ....
Mr.Snow - WkT 2000
|
Saludos
y tal ... |
Salu2 a todos los miembros de WKT
,al ZaIote (bzz),Karpoff , Ni2,Gadix,Xasx,A todos los del
canal #crackers del hispano , a Digital Justice , y todos los
ke me han ayudado y apoyado en el mundo de la II y recordar
Punk Not Dead y Whiskey Kon Tekila menos. jeje |
[
Entrada
|
Documentos Genéricos
|
WkT! Web Site
]
|
[
Todo el ECD
|
x Tipo de Protección
|
x Fecha de Publicación
|
x Orden Alfabético
]
|
|
(c) Whiskey Kon Tekila [WkT!] - The Original Spanish Reversers.
Si necesitas contactar con
nosotros
,
lee
esto
antes e infórmate de cómo puedes
ayudarnos
|
|
|
|
|
|