ones one crackmes crackme reverse-engineering cracking

reverse-engineering - ones - crackmes one



¿Cómo se desarrollan generadores/grietas en serie? (8)

Además de ser ilegal, es una tarea muy compleja.

Hablando solo a un nivel teórico, la forma común es desensamblar el programa para descifrarlo e intentar encontrar dónde se verifica la clave o el código serie.

Es más fácil decirlo que hacerlo, ya que cualquier esquema de protección serio verificará los valores en varios lugares y también obtendrá información crítica de la clave de serie para su uso posterior, de modo que cuando crea que lo adivinó, el programa se bloqueará.

Para crear una grieta, debe identificar todos los puntos donde se realiza una verificación y modificar el código de ensamblaje de manera apropiada (a menudo invirtiendo un salto condicional o almacenando costas en ubicaciones de memoria).

Para crear un keygen, debes entender el algoritmo y escribir un programa para volver a hacer el mismo cálculo exacto (recuerdo una versión anterior de MS Office cuyo serial tenía una regla muy simple, la suma del dígito debería haber sido un múltiplo de 7, por lo que escribir el keygen fue bastante trivial).

Ambas actividades requieren que sigas la ejecución de la aplicación en un depurador y trates de descubrir qué está pasando. Y necesita saber la API de bajo nivel de su sistema operativo.

Algunas aplicaciones fuertemente protegidas tienen el código encriptado para que el archivo no pueda ser desmontado. Se descifra cuando se carga en la memoria pero luego se niegan a iniciarse si detectan que se ha iniciado un depurador en la memoria,

En esencia, es algo que requiere un conocimiento profundo, ingenio y mucho tiempo. Ah, ¿mencioné que es ilegal en la mayoría de los países?

Si desea obtener más información, busque los tutoriales de Crack de + ORC, que son muy antiguos y probablemente inútiles actualmente, pero le darán una buena idea de lo que significan.

De todos modos, una muy buena razón para saber todo esto es si quieres escribir tu propio esquema de protección.

Quiero decir, siempre me pregunté cómo demonios alguien puede desarrollar algoritmos para romper / engañar las restricciones del uso legal en muchos programas shareware que existen.

Solamente por curiosidad.


El número de serie puede extraer el algoritmo y comenzar a arrojar "Guesses" y buscar una respuesta positiva. Las computadoras son potentes, por lo general solo demoran un poco antes de que empiece a escupir hits.

En cuanto a la piratería, solía ser capaz de recorrer programas a un alto nivel y buscar un punto donde dejara de funcionar. Luego regresa a la última "Llamada" que tuvo éxito y entra en ella, luego repita. En aquel entonces, la protección contra copia usualmente estaba escribiendo en el disco y viendo si se producía una lectura subsecuente (de ser así, la protección contra copia fallaba porque solían grabar parte del disquete con un láser para que no se pudiera escribir en él).

Luego solo fue cuestión de encontrar la llamada correcta y codificar el valor de retorno correcto de esa llamada.

Estoy seguro de que sigue siendo similar, pero hacen un gran esfuerzo para ocultar la ubicación de la llamada. La última vez que lo intenté, me rendí porque seguía cargando código sobre el código que estaba pasando, y estoy seguro de que se ha vuelto mucho más complicado desde entonces.


La publicación de Nils trata sobre generadores de claves. Para grietas, generalmente encuentra un punto de ramificación e invierte (o elimina la condición) la lógica. Por ejemplo, probará para ver si el software está registrado, y la prueba puede devolver cero si es así, y luego saltará en consecuencia. Puede cambiar el "salto si es igual a cero (je)" a "saltar si no es igual a cero (jne)" modificando un solo byte. O puede escribir sin operaciones sobre varias partes del código que hacen cosas que no quiere hacer.

Los programas compilados se pueden desmontar y con tiempo suficiente, las personas determinadas pueden desarrollar parches binarios. Una grieta es simplemente un parche binario para que el programa se comporte de manera diferente.


Supongo que cada grieta es diferente, pero creo que en la mayoría de los casos alguien pasa mucho tiempo en el depurador rastreando la aplicación en cuestión.

El generador en serie da un paso más al analizar el algoritmo que verifica la validez del número de serie y lo revierte.


Un aspirante a cracker desarma el programa y busca los bits de "protección contra copia", específicamente para el algoritmo que determina si un número de serie es válido. A partir de ese código, a menudo puede ver qué patrón de bits se necesita para desbloquear la funcionalidad, y luego escribir un generador para crear números con esos patrones.

Otra alternativa es buscar funciones que devuelvan "verdadero" si el número de serie es válido y "falso" si no es así, luego desarrolle un parche binario para que la función siempre devuelva "verdadero".

Todo lo demás es en gran medida una variante de esas dos ideas. La protección contra copia siempre se puede romper por definición; en algún momento debe terminar con un código ejecutable o el procesador no podría ejecutarlo.


En primer lugar, la mayoría de los esquemas de protección contra copia no están muy avanzados, razón por la cual no se ve mucha gente haciendo lo propio hoy en día.

Hay algunos métodos utilizados para hacer esto. Puede recorrer el código en un depurador, que generalmente requiere un conocimiento decente del ensamblado. Con eso, puede hacerse una idea de en qué parte del programa se llaman los métodos de protección de copia / keygen. Con eso, puede usar un desensamblador como IDA Pro para analizar el código más de cerca y tratar de entender qué está pasando y cómo puede omitirlo. He descifrado Betas de tiempo limitado insertando instrucciones de NOOP antes de la verificación de fecha.

Realmente todo se reduce a una buena comprensión del software y una comprensión básica del ensamblaje. Hak5 hizo una serie de dos partes en los primeros dos episodios de esta temporada sobre los fundamentos de la ingeniería inversa y el cracking. Es realmente básico, pero es probable que sea exactamente lo que estás buscando.


Me pregunto por qué no solo distribuyen binarios personalizados, donde el nombre del propietario se almacena en algún lugar (encriptado y ofuscado) en el binario o se distribuye mejor en todo el binario ... AFAIK Apple está haciendo esto con los archivos de música de iTunes almacenar, sin embargo, allí es demasiado fácil, para eliminar el nombre de los archivos.


Los malos buscan el código de verificación con un desensamblador. Esto es relativamente fácil si sabes cómo hacer esto.

Luego, traduce el código de verificación de clave a C u otro idioma (este paso es opcional). Invertir el proceso de verificación de clave le proporciona un generador de clave.

Si conoces ensamblador, toma aproximadamente un fin de semana aprender a hacerlo. Lo hice hace algunos años (aunque nunca publiqué nada. Solo fue una investigación para mi trabajo de desarrollo de juegos. Para escribir una tecla difícil de descifrar, debes entender cómo se acerca la gente al crackeo).