¿Cómo hacen crackers los videojuegos? ¿Qué es la ingeniería inversa?

El programador usa c / c ++ u otro lenguaje de alto nivel para escribir software. Pero la computadora no puede entenderlo. La computadora solo sabe 1 y 0. Sin embargo, la gente no puede entenderlo fácilmente. Por lo tanto, la gente usa el ensamblado para entenderlo. eax, 0x1.
Cuando quiero descifrar un software, no sé el código fuente. Debo usar un depurador como Ollydbg, ida, windbg. Puedo ver el lenguaje ensamblador por ellos.
Por ejemplo, si desea utilizar un software comercial, debe comprar
una clave primero. Cuando ingresa un código clave, ejecute así.


para (i = 0; i <longitud; i ++)
{
total + = clave [i];
}
si (total == 123)
cout << "éxito" << endl;
más
cout << "incorrecto" << endl;


si ingresa una clave incorrecta, no puede usarla. pero cuando uso el depurador, puedo ver un código como este:
empezar:
mov ecx, 0
agregar eax, [edx]
inc edx
inc ecx
cmp ecx, longitud
jb comenzar
cmp eax, 123
jz address1
incorrecto
Dirección 1
éxito


entonces, puedo cambiar “jz address1” a “jmp
dirección1 “. No importa lo que ingrese, puedo usar el software sin comprar la clave. El juego de crack es el mismo con esto.

El software existe en dos formas: el código normal, legible por humanos que escriben los programadores; y el código de máquina (más comúnmente denominado código de ensamblaje) que se ejecuta en su computadora. Cuando compila un programa C ++, por ejemplo, el compilador convierte su código C ++ legible por humanos en el código de máquina que reside en el archivo ejecutable que escupe.

La ingeniería inversa (generalmente) se refiere al proceso de lectura y análisis de ese código de máquina. Es comparable a descargar un gran proyecto de código abierto y familiarizarse con él. Con un proyecto OSS, quizás desee leer los documentos y luego buscar los módulos de código que más le interesen y leerlos detenidamente antes de realizar sus propias modificaciones. Con la ingeniería inversa, es muy similar: puede comenzar reuniendo información en línea sobre el programa, y ​​luego averiguar qué partes del código de máquina le interesan y luego hacer algunos cambios en el código de la máquina para provocar el programa para comportarse de manera diferente.

Entonces el craqueo es básicamente una aplicación de ingeniería inversa. Debería recopilar información sobre el software (buscar en línea información sobre su sistema DRM), luego comenzar a reducir el código de máquina del programa solo a las partes que pertenecen al sistema DRM, y finalmente realizar los cambios que desee. código para cambiar cómo funciona el sistema DRM (por ejemplo, para que no funcione en absoluto).

La ingeniería inversa es descubrir cómo se formó algo. Con respecto a los videojuegos, es para determinar cómo se programaron varias funciones.

¿Cómo se rompen los videojuegos? ¡Eso sería contar!