Download - Examen en olly dbg
![Page 1: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/1.jpg)
Caso Examen con Ollydbg30-05-2013
![Page 2: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/2.jpg)
El caso siguiente es un paso mas, en este ya no compara directamente el serial que escribimos sino que realiza algunas operaciones antes de comparar veamos el ejemplo, este es el Examen, abrámoslo en OLLYDBG.
![Page 3: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/3.jpg)
![Page 4: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/4.jpg)
Ya sabemos como ver las apis que utiliza, así que en la lista vemos GetDlgItemTextA, pongámosle un BPX en dicha api.
![Page 5: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/5.jpg)
![Page 6: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/6.jpg)
![Page 7: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/7.jpg)
![Page 8: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/8.jpg)
Ahora doy RUN con F9 y aparece la ventana para ingresar el serial
![Page 9: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/9.jpg)
![Page 10: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/10.jpg)
Allí escribo mi serial falso
![Page 11: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/11.jpg)
![Page 12: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/12.jpg)
Y aprieto el botón Check y para en la api
![Page 13: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/13.jpg)
![Page 14: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/14.jpg)
En el stack miro los parámetros
![Page 15: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/15.jpg)
![Page 16: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/16.jpg)
Allí vemos el BUFFER donde guardara el serial falso, marco esa línea y hago CLICK DERECHO-FOLLOW IN DUMP
![Page 17: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/17.jpg)
![Page 18: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/18.jpg)
Allí esta el buffer vacío, porque aun no se ejecuto la api, así que hago DEBUG-EXECUTE TILL RETURN
![Page 19: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/19.jpg)
![Page 20: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/20.jpg)
Con lo cual ejecuto la api y llego al RET de la misma.
![Page 21: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/21.jpg)
![Page 22: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/22.jpg)
Aprieto F7 para volver al programa
![Page 23: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/23.jpg)
![Page 24: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/24.jpg)
Y veo que en el BUFFER esta ahora el serial falso que ingrese.
![Page 25: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/25.jpg)
![Page 26: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/26.jpg)
Allí veo una larga rutina con un numero constante, que si alguno tuvo la idea de probar si es el serial correcto ya sabrá que no lo es.
Allí mueve 401222 a EAX y en el registro EAX vemos que dicha dirección apunta a la string del numero constante.
![Page 27: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/27.jpg)
![Page 28: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/28.jpg)
![Page 29: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/29.jpg)
En la siguiente línea como EAX vale 401222 ,
MOV EDX,DWORD PTR DS:[EAX]
En realidad es similar a
MOV EDX,DWORD PTR DS:[401222]
![Page 30: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/30.jpg)
![Page 31: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/31.jpg)
En la aclaración del OLLY se ve bien que son los 4 primeros bytes del numero 10445678951
![Page 32: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/32.jpg)
![Page 33: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/33.jpg)
Al ejecutar la línea con F7 se mueven a EDX (siempre se moverán al revés al mover de la memoria a un registro)
![Page 34: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/34.jpg)
![Page 35: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/35.jpg)
La siguiente línea esos bytes que están en EDX los mueve a [EBP-30]
![Page 36: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/36.jpg)
![Page 37: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/37.jpg)
En la aclaración del OLLY vemos que [EBP-30] es en mi maquina 240f9e4, lo busco en el DUMP
![Page 38: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/38.jpg)
![Page 39: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/39.jpg)
![Page 40: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/40.jpg)
![Page 41: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/41.jpg)
![Page 42: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/42.jpg)
Luego
![Page 43: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/43.jpg)
![Page 44: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/44.jpg)
Mueve a EDX los siguientes cuatro bytes del número constante
![Page 45: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/45.jpg)
![Page 46: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/46.jpg)
La aclaración del OLLY lo muestra, en este caso [eax+4] es en este caso el contenido de 401226 y al ejecutar con F7 mueve los 4 bytes siguientes a EDX.
![Page 47: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/47.jpg)
![Page 48: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/48.jpg)
Y los copia a continuación de donde copio los anteriores
![Page 49: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/49.jpg)
![Page 50: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/50.jpg)
Quedando el número completo copiado allí.
Allí vemos que un poco mas abajo se acerca a una llamada a la api memset, allí vemos los parámetros en OLLYDBG
![Page 51: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/51.jpg)
![Page 52: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/52.jpg)
En este caso no hay problema mueve el primer byte de mi serial falso el 39 a EDX al ejecutar la línea vemos que EDX vale 39.
![Page 53: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/53.jpg)
![Page 54: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/54.jpg)
La siguiente línea es un LEA
![Page 55: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/55.jpg)
![Page 56: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/56.jpg)
Y como EDX vale 39, le resta 14 y como es un LEA mueve el resultado directo a EAX.
![Page 57: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/57.jpg)
![Page 58: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/58.jpg)
O sea que la operación que realizo es tomar 39 que es el valor hexa del primer carácter de mi serial, y le resto 14 y quedo por ahora en 25, el cual esta en EAX.
![Page 59: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/59.jpg)
![Page 60: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/60.jpg)
La siguiente línea mueve el valor 0040136E que en mi maquina es 240f9E4 que apunta al inicio del numero constante guardado a EDX.
![Page 61: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/61.jpg)
![Page 62: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/62.jpg)
Al apretar F7
![Page 63: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/63.jpg)
![Page 64: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/64.jpg)
Queda EDX apuntando al inicio del número constante.
![Page 65: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/65.jpg)
![Page 66: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/66.jpg)
Aquí vemos que mueve a ECX el valor cero y en cada pasada que haga en el LOOP se incrementará, permitiendo a ECX+EDX apuntar a los distintos bytes del numero constante
![Page 67: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/67.jpg)
![Page 68: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/68.jpg)
Ahí vemos como ECX por ahora vale cero y EDX apunta al inicio del numero, moverá a EDX en este primer paso por esta línea, el primer byte del numero vemos en la aclaración del OLLYDBG.
![Page 69: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/69.jpg)
![Page 70: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/70.jpg)
Que mueve el byte 31 que corresponde al 1 en ASCII, es la primera cifra del número constante
![Page 71: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/71.jpg)
![Page 72: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/72.jpg)
Allí llegamos a una comparación como recordamos
![Page 73: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/73.jpg)
![Page 74: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/74.jpg)
Como estoy utilizando el serial falso, la comparación no es igual, solo serán iguales ambos miembros cuando usemos el serial correcto ya que es el valor que hace que la comparación llegue a ser una igualdad.
CMP (PRIMER BYTE DE MI SERIAL CORRECTO – 14), 31
Ya que la condición es que ambos miembros sean iguales
PRIMER BYTE DEL SERIAL CORRECTO-14= PRIMER BYTE DEL NUMERO CONSTANTE
Por lo tanto
PRIMER BYTE DEL SERIAL CORRECTO= PRIMER BYTE DEL NUMERO CONSTANTE +14
![Page 75: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/75.jpg)
![Page 76: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/76.jpg)
Y así sucesivamente
Siguiendo la misma lógica, a cada byte del numero constante, le sumamos 14 y obtenemos el valor del byte correspondiente a nuestro serial correcto.
31 30 34 34 35 36 37 38 10445678
39 35 31 00 00 00 00 00 951.....
![Page 77: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/77.jpg)
Equivalencias
![Page 78: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/78.jpg)
Y así sucesivamente
31 +14=45 es la letra E en ASCII
30 + 14= 44 es la letra D en ASCII
34 + 14= 48 es la letra H en ASCII
34 + 14= 48 es la letra H en ASCII
35 + 14= 49 es la letra I en ASCII
36 + 14 = 4A es la letra J en ASCII
37 + 14= 4B es la letra K en ASCII
38 + 14 = 4C es la letra L en ASCII
39 + 14 = 4D es la letra M en ASCII
![Page 79: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/79.jpg)
35 + 14= 48 es la letra I en ASCII
31 +14=45 es la letra E en ASCII
Por lo cual el serial correcto es
EDHHIJKLMIE
![Page 80: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/80.jpg)
Pongámoslo en la ventana del serial borrando todos los BPX.
![Page 81: Examen en olly dbg](https://reader035.vdocuments.co/reader035/viewer/2022062406/55b71742bb61eb09668b45b6/html5/thumbnails/81.jpg)