Bien qué es un ófset ófset es un desplazamiento.
Es decir la cantidad de posiciones que uno se tiene que desplazar desde el bit cero desde el inicio
del principio de un archivo binario hasta dar con la rutina de comparación ya sea al mago blanco o el
Mago Negro.
Es un punto de referencia de comienzo por ejemplo aquí en esta imagen estamos viendo valores si cada
uno de estos valores en hexadecimal que como dijimos son 8 bit cada valor por ejemplo este 4 en hexadecimal
esta posición representa 4 bits la otra otros 4 bit.
Así que en total tenemos 8 bit.
Si un bit está dividido por bit así como en la mayoría de los editores hexadecimales si se fijan cada
uno de estos valores cada uno de estos valores en hexadecimal tiene una posición este por ejemplo está
conoce cero desclasamiento cero claro porque acá donde inicia el archivo binario entonces cero a qué
corresponde esto si se fija en la representación decimal a veces 1 cuando la representación en hexadecimal
no coincide con alguna leyenda la leyéndome puede llegar a ver lo que hay después otro tipo de código
aparece sin sentido como caracteres sin sentido porque significan otra cosa.
Pero por ejemplo el 44 coincide con la de El 4 de este que está acá coincide con la M que tiene 1 7
1 Ok.
Si se fijan se dan cuenta que por ejemplo en esta palabra yo tengo en el offset número 3 un espacio
en el número 3 en un espacio este es el offset las máquinas empiezan a contar de ceros no de uno como
los humanos.
Este sería primero segundo tercero y el obsequiados digámoslo así tengo el valor 20.
O sea que el espacio es un 20.
A ver si es cierto que tengo otro espacio a ver si tienen valor 20 contemos una dos tres cuatro cinco
o seis posiciones más una dos tres cuatro cinco seis posiciones más y tengo un valor de 20 otra vez.
Yo quiero referenciar a la letra o voy a estar referenciando a este par de números en hexadecimal con
offset 0 F.
Ok ahí se darán cuenta que esto está en hexadecimal así que hasta cada uno lo puede seguir como un ser
humano 0 o 1 2 3 4 hasta los 6 9 el cero significa 10 en cero significa 11 12 13 14 15 hasta el 16 ok.
Vamos a vamos a seguir
que es un Patch es un parche un parche puede implicar la modificación del código es decir hacer un crack
por ejemplo cambiar como se ve acá.
Acá tenemos supongamos que contamos de acá abajo 1 11 ófset 1 2 3 4 5 hubo un cambio en el offset 5
y 1 Ok.
Originalmente decía uno cero uno cero y se lo cambió por cero cero cero uno.
Lo mismo acá arriba
originalmente había un uno uno cero uno y ahora se lo cambió por uno cero uno cero así como los procesaría
la máquina.
Entonces un parche es hacer una modificación.
Nosotros lo vamos a utilizar para romper la lógica de comparación de el software.
Hay otro tipo de parche que lo hace la gente un poco más Guru más más con más expertise experiencia
en el tema que no solamente modifica instrucciones sino que agregan código nuevo es decir esta instrucción.
Si antes era una instrucción de salto directa en lugar de la negada lo que hacen es hacerla saltar a
otra parte del código que originalmente esto no tenía y que ellos escribieron para qué.
Para darle más funcionalidad a los programas.
Esto lo hace mucho con los juegos para lograr algún tipo de beneficio que no exista en el juego.
Entonces hay mucha gente que se jacta de tener alguna función especial que ni el propio programador
supo que estaba claro porque no estaba en realidad lo que están haciendo es hacer un Champi y no una
desviación del código es decir un cracking con agregado y modificación del Código esto no hace mucho
los virus también.
Si hay ciertos tipos de virus que para no ser detectados por ciertos antivirus que cada vez que uno
abre un archivo que tiene un montón de información Leena más que cierta parte.
Entonces lo que hacían los virus es que modificaban el código de cada archivo exe del disco dejaban
un pedazo original del código pero justo antes de internamente iniciar el programa se desviaban hacia
su propia rutina haciendo lo que querían infectaban y después volvían al siguiente bit para que el programa
original continúa.
Entonces uno se abría la calculadora de Windows y no sabía que un instante antes de hacer el primer
dibujito del primer botoncito estaba ejecutándose el virus a sus anchas y cuando había terminado o se
había cargado de memoria en realidad volvía con la próxima instrucción de la calculadora y terminaba
dibujando la calculadora.
Generalmente los antivirus no lo detectaban haciendo su rutina primaria y después con los motores de
heurística y todo lo que es la caja de arena con inteligencia artificial podía dar un curso o un curso
de virus y han pedido mucho pero digamos que hoy en día es más difícil pero existen códigos polimórfico
es excelente.
Si me demuestran que les gusta este tema de cracking les voy a dar un curso de Bini making porque tiene
mucho que ver con todo esto es mucho más complejo no hablamos de código que muta automáticamente y cosas
como esa.
Bien cómo se ve el offset en nuestro editor hexadecimal.
Bueno aquí abajo lo tenemos Workshop vamos a ejecutarlo
Okey vamos a abrir el Kramnik que yo ya lo tengo acá grabado.
Acá allá arriba dice Cragg y acá está el escritorio Okey vamos a dejarlo que lo edite por acá está.
Entonces si yo estoy parado dónde está el cursor ahora acá sí.
Obviamente sé que el offset es cero donde está el offset está tapando justamente la ventana lo voy a
señalar a mano pero acá está porque hay offset.
En este caso estoy parado en el offset cero cero cero.
Supongamos que yo quiera modificar.
Uno puede empezar a jugar digamos hacer sus primeros pinitos en este tema modificando el texto que el
texto aparece claro.
Por ejemplo ustedes tienen un programa como la calculadora por dar un ejemplo que arriba dice ayuda
a menú y uno busca acá con buscar con el ícono de buscar buscar la palabra ayuda lo que quiera modificar
y la cambia y en lugar de ayuda le pone el mío ayúdame o Hola Mundo ok.
Si lo hace bien cuando graba los cambios y puede ejecutar el binario va a haber que todo lo que estaba
escrito va a aparecer por lo que ahora escribió uno ok así que bueno esto como gráfico fácil yo quiero
modificar por ejemplo acaban de dice de ese y en lugar de Estado quiero poner una o minúscula lo que
significaría en lugar de Operating System si estuviese en minúsculas significaría de al observes denegación
de servicio si es una broma o que hay un programa de denegación de servicio de Windows o un programa
que te deniega el servicio.
Es un chiste entre programadores.
Así yo que pasa acabo de poner el cursor ahí en qué ófset ófset está acá está el House está en la posición
6 e en hexa decimal.
Si después lo puedo convertir con una calculadora a decimal si quería saber quiero saber a qué distancia
está contando a mano.
No importa este caso más fácil porque yo lo que hago es pararme acá y borrar este valor y modificarlo
y después guardar los cambios.
Ok pero bueno para mi tengo una idea cuando se trabaja con un editor hexadecimal se trabaja con offset
y cuando se ensambla y se obtiene el código y uno va viendo la rutina de comparación el lenguaje ensamblador
que como dije no va a aparecer así sino que va a aparecer como un lenguaje de programación un poco más
entendible para el ser humano en el momento de ubicar la rutina de comparación.
Vamos a tener que anotar el offset y decir dónde está esa rutina en el código binario no en el programa
de ensamblado para después venir acá y hacerlo coincidir con este tipo de horas el cambio donde uno
realmente lo tiene que hacer y no en otro otra secuencia que pueda tener el mismo ritmo que se pueda
ver igual.
Ok bien vamos con la próxima clase en donde vamos a ver lo que son los string los combos y los patches
y ya con eso vamos a terminar este capítulo y vamos a arrancar con otro capítulo en donde vamos a ver
las herramientas del cracker para posteriormente empezar a jugar.