2008-09-24 9 views
28

Quiero decir, siempre me he preguntado cómo demonios alguien puede desarrollar algoritmos para romper/engañar las restricciones del uso legal en muchos programas shareware.¿Cómo se desarrollan generadores/grietas en serie?

Sólo por curiosidad.

+0

Dang, estaba a punto de hacer la misma pregunta. ¡Buen ol 'SO! –

Respuesta

27

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

Hablando a un nivel teórico, lo común es desmontar el programa para que se agriete e intente encontrar dónde se comprueba 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 para que cuando creas que el programa se bloqueará.

Para crear una grieta, debe identificar todos los puntos donde se realiza una comprobación y modificar el código de ensamblaje de forma 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 (recuerdo una versión anterior de MS Office cuyo serial tenía una regla muy simple, la suma del dígito debería tener 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 y trate de descubrir qué está sucediendo. 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 se pueda desmontar. Se descifra cuando se carga en la memoria, pero luego se niegan a iniciar si detectan que se ha iniciado un depurador en 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 saber más, Google para los tutoriales de Crack + ORC son muy viejos y probablemente inútiles en la actualidad, pero le darán una buena idea de lo que significa.

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

+4

Dudo que sea ilegal. Puede ser ilegal usar el programa crackeado si no lo ha pagado. Pero ni el crack, ni el proceso de desarrollo del crack ni el descifrado del programa serían, en mi opinión, ilegales. – erlando

+3

Excepto en los EE. UU. Pero todo lo que tiene que ver con las tecnologías de la información parece ser ilegal allí ... Todos saludan a la tierra de los libres. – erlando

+1

Tenga en cuenta que una aplicación no tiene forma de saber si se está ejecutando dentro de un emulador de máquina, como Qemu. No es necesario que un depurador se ejecute en el mismo espacio de memoria que la aplicación. –

15

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

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

Si conoce el ensamblador, se tarda aproximadamente un fin de semana en 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).

+6

"Malos" y aquellos que desean proteger su derecho a usar los programas que han comprado. Con fiascos como la reciente debacle de Spore, confiaría en un grupo de piratería al azar más de lo que confío en muchos desarrolladores de juegos. –

+5

Si le preguntas a los desarrolladores del juego, preferirían lanzar los juegos sin todas esas cosas de protección de copia. Se agrietará de todos modos en cuestión de días. Para los desarrolladores, solo cuesta dinero y aumenta el soporte-efford. Los editores tienen la culpa. Imponen la protección anticopia. –

+0

Confiar en hackers es simplemente estúpido. La mayoría de los keygens descargables contienen algún tipo de malware (generalmente troyanos o puertas traseras) y los escáneres de virus generalmente no los encuentran. A veces los crackers dicen ignorar las advertencias de virus, está bien, no hay virus. ¿Oh enserio? Claro, es solo un troyano ... – steffenj

4

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

Existen algunos métodos 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 se reduce a una buena comprensión del software y una comprensión básica del montaje. Hak5 hizo una serie de dos partes en los dos primeros 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.

0

Supongo que cada grieta es diferente, pero creo 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 da un paso más allá al analizar el algoritmo que comprueba el número de serie para la validez y lo revierte.

+0

bien obviamente ... – Adam

3

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 es siempre rompible por definición: en algún momento debe terminar con código ejecutable o el procesador no podría ejecutarlo.

2

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 los 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 fue solo una 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.

9

La publicación de Nils trata sobre los generadores de llaves. 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, determinadas personas pueden desarrollar parches binarios.Una grieta es simplemente un parche binario para que el programa se comporte de manera diferente.

1

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

+0

porque entonces solo obtienes los binarios de varias ubicaciones y dif. los archivos ... (creo) – Adam

Cuestiones relacionadas