Pregunta

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

Sólo por curiosidad.

¿Fue útil?

Solución

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

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

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

Para crear una grieta, debe identificar todos los puntos en los que se realiza una comprobación y modificar el código de ensamblaje de forma adecuada (a menudo invirtiendo un salto condicional o almacenando costantes en ubicaciones de memoria).

Para crear un keygen, debes entender el algoritmo y escribir un programa para volver a realizar el mismo cálculo (recuerdo una versión antigua de MS Office cuya serie 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 siga la ejecución de la aplicación en un depurador e intente averiguar qué está sucediendo. Y necesita conocer la API de bajo nivel de su sistema operativo.

Algunas aplicaciones muy protegidas tienen el código encriptado para que el archivo no se pueda desarmar. 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 muy profundo, ingenio y mucho tiempo! Oh, ¿mencioné que es ilegal en la mayoría de los países?

Si quieres saber más, Google para los tutoriales de craqueo de + ORC son muy antiguos y probablemente inútiles hoy en día, pero te darán una buena idea de lo que significa.

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

Otros consejos

Los chicos malos buscan el código de verificación de clave usando un desensamblador. Esto es relativamente fácil si sabes cómo hacerlo.

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

Si sabes ensamblador, se necesita aproximadamente un fin de semana para aprender a hacer esto. Lo hice hace algunos años (aunque nunca publiqué nada. Fue solo una investigación para mi trabajo de desarrollo de juegos. Para escribir una clave difícil de entender, debes entender cómo la gente se acerca al cracking).

La publicación de Nils trata con generadores clave. Para las grietas, generalmente se encuentra un punto de bifurcación e invierte (o elimina la condición) la lógica. Por ejemplo, hará una prueba 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) " para " saltar si no es igual a cero (jne) " mediante la modificación de un solo byte. O puede escribir sin operaciones sobre varias partes del código que hacen cosas que no desea hacer.

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

En primer lugar, la mayoría de los esquemas de protección contra copia no están muy avanzados, por lo que actualmente no se ve a muchas personas haciendo rodar de ellos mismos.

Hay algunos métodos utilizados para hacer esto. Puede recorrer el código en un depurador, que generalmente requiere un conocimiento decente del ensamblaje. Con esto, puede tener una idea de dónde se llaman los métodos de protección de copia / keygen del programa. Con eso, puede usar un desensamblador como IDA Pro para analizar el código más de cerca y probar para entender lo que está pasando y cómo puede evitarlo. He roto Betas de tiempo limitado anteriormente insertando instrucciones NOOP sobre la fecha de verificación.

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

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

Otra alternativa es buscar funciones que devuelvan " true " si el número de serie es válido y " falso " si no lo está, entonces desarrolle un parche binario para que la función siempre devuelva " true " ;.

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

El número de serie, solo puede extraer el algoritmo y comenzar a lanzar " Guesses " en ello y buscar una respuesta positiva. Las computadoras son poderosas, por lo general solo toma un poco de tiempo antes de que empiecen a escupir golpes.

En cuanto a la piratería, solía poder avanzar a través de los programas a un nivel alto y buscar un punto donde dejara de funcionar. Luego regresa a la última " Llamada " Eso tuvo éxito y paso en ello, luego repita. En ese entonces, la protección contra copia solía escribir en el disco y ver si una lectura posterior tenía éxito (si es así, la protección contra copia fallaba porque solían quemar parte del disquete con un láser, por lo que no se podía escribir). / p>

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

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

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 mejor distribuido en todo el binario. AFAIK Apple está haciendo esto con los archivos de música desde la tienda de iTunes, sin embargo, es muy fácil eliminar el nombre de los archivos.

Supongo que cada crack es diferente, pero supongo que en la mayoría de los casos alguien gasta mucho tiempo en el depurador que rastrea la aplicación en cuestión.

El generador en serie lleva eso un paso más allá al analizar el algoritmo que comprueba la validez del número de serie y revisa su ingeniería.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top