Craqueo de software - Software cracking

El descifrado de software (conocido como "rotura" principalmente en la década de 1980) es la modificación del software para eliminar o deshabilitar funciones que la persona que descifra el software considera indeseables, especialmente las funciones de protección contra copia (incluida la protección contra la manipulación del software, el número de serie, clave de hardware, verificación de fecha y verificación de disco) o molestias de software como pantallas molestas y adware .

Un crack se refiere a los medios para lograr, por ejemplo, un número de serie robado o una herramienta que realiza ese acto de craqueo. Algunas de estas herramientas se denominan keygen , patch o loader . Un keygen es un generador de números de serie de producto hecho a mano que a menudo ofrece la capacidad de generar números de serie funcionales en su propio nombre. Un parche es un pequeño programa de computadora que modifica el código de máquina de otro programa. Esto tiene la ventaja de que un cracker no incluya un ejecutable grande en una versión cuando solo se cambian unos pocos bytes. Un cargador modifica el flujo de inicio de un programa y no elimina la protección, sino que la elude. Un ejemplo bien conocido de cargador es un entrenador que se usa para hacer trampa en los juegos. Fairlight señaló en uno de sus archivos .nfo que este tipo de grietas no están permitidas para los lanzamientos de juegos de escena warez . Una guerra nuclear ha demostrado que es posible que la protección no se active en ningún momento para que sea una grieta válida.

La distribución de copias crackeadas es ilegal en la mayoría de los países. Ha habido demandas por craqueo de software. Puede ser legal utilizar software pirateado en determinadas circunstancias. Sin embargo, los recursos educativos para la ingeniería inversa y el descifrado de software son legales y están disponibles en forma de programas de Crackme .

Historia

La primera protección contra copia de software se aplicó al software de las computadoras Apple II , Atari 800 y Commodore 64. Los editores de software han implementado métodos cada vez más complejos en un esfuerzo por detener la copia no autorizada de software.

En Apple II, a diferencia de las computadoras modernas que usan controladores de dispositivos estandarizados para administrar las comunicaciones del dispositivo, el sistema operativo controlaba directamente el motor paso a paso que mueve el cabezal de la unidad de disquete y también interpretaba directamente los datos sin procesar, llamados nibbles , leídos de cada pista para identificar los sectores de datos. Esto permitió una protección de copia de software compleja basada en disco, al almacenar datos en medias pistas (0, 1, 2.5, 3.5, 5, 6 ...), cuartos de pista (0, 1, 2.25, 3.75, 5, 6 ... ), y cualquier combinación de los mismos. Además, las pistas no necesitaban ser anillos perfectos, sino que podían seccionarse de modo que los sectores pudieran escalonarse a lo largo de pistas desplazadas superpuestas, la versión más extrema se conoce como seguimiento en espiral. También se descubrió que muchas unidades de disquete no tenían un límite superior fijo para el movimiento del cabezal y, a veces, era posible escribir una pista 36 adicional por encima de las 35 pistas normales. Los programas de copia estándar de Apple II no podían leer tales disquetes protegidos, ya que el DOS estándar asumía que todos los discos tenían un diseño uniforme de 35 pistas, 13 o 16 sectores. Los programas especiales de copia pequeña, como Locksmith y Copy II Plus, a veces pueden duplicar estos discos utilizando una biblioteca de referencia de métodos de protección conocidos; cuando los programas protegidos se descifran, se eliminan por completo del sistema de protección contra copias y se transfieren a un disco de formato estándar que cualquier programa de copia normal de Apple II podría leer.

Una de las rutas principales para piratear estas primeras protecciones contra copias era ejecutar un programa que simulara el funcionamiento normal de la CPU. El simulador de CPU proporciona una serie de características adicionales al pirata informático, como la capacidad de realizar un solo paso a través de cada instrucción del procesador y examinar los registros de la CPU y los espacios de memoria modificados a medida que se ejecuta la simulación (cualquier desensamblador / depurador moderno puede hacer esto). El Apple II proporcionó un desensamblador de código de operación incorporado, que permitía decodificar la memoria sin procesar en códigos de operación de la CPU, y esto se utilizaría para examinar lo que la protección contra copias estaba a punto de hacer a continuación. En general, había poca o ninguna defensa disponible para el sistema de protección contra copias, ya que todos sus secretos se hacen visibles a través de la simulación. Sin embargo, debido a que la simulación en sí debe ejecutarse en la CPU original, además del software que se ha pirateado, la simulación a menudo se ejecuta muy lentamente incluso a la máxima velocidad.

En las computadoras Atari de 8 bits, el método de protección más común era a través de "sectores defectuosos". Estos eran sectores del disco que la unidad de disco no podía leer intencionalmente. El software buscaría estos sectores cuando el programa se estuviera cargando y dejaría de cargar si no se devolviera un código de error al acceder a estos sectores. Había disponibles programas de copia especiales que copiarían el disco y recordarían los sectores defectuosos. Luego, el usuario podría usar una aplicación para hacer girar la unidad leyendo constantemente un solo sector y mostrando las RPM de la unidad. Con la parte superior de la unidad de disco retirada, se podría usar un destornillador pequeño para reducir las RPM de la unidad por debajo de cierto punto. Una vez que la unidad se ralentizó, la aplicación podría ir y escribir "sectores defectuosos" donde sea necesario. Cuando terminó, las RPM de la unidad se aceleraron de nuevo a la normalidad y se realizó una copia sin fisuras. Por supuesto, descifrar el software para esperar buenos sectores hechos para discos fácilmente copiados sin la necesidad de entrometerse con la unidad de disco. A medida que pasó el tiempo, se desarrollaron métodos más sofisticados, pero casi todos involucraron algún tipo de datos de disco con formato incorrecto, como un sector que podría devolver diferentes datos en accesos separados debido a una mala alineación de datos. Se pusieron a disposición productos (de empresas como Happy Computers ) que reemplazaron el BIOS del controlador en las unidades "inteligentes" de Atari. Estas unidades mejoradas permitieron al usuario hacer copias exactas del programa original con protecciones de copia en el nuevo disco.

En el Commodore 64, se utilizaron varios métodos para proteger el software. Para el software distribuido en cartuchos ROM , se incluyeron subrutinas que intentaron escribir sobre el código del programa. Si el software estuviera en la ROM, no pasaría nada, pero si el software se hubiera movido a la RAM , el software se deshabilitaría. Debido al funcionamiento de las unidades de disquete Commodore, un esquema de protección contra escritura haría que el cabezal de la unidad de disquete golpeara contra el extremo de su riel, lo que podría provocar que el cabezal de la unidad se desalineara. En algunos casos, las versiones crackeadas de software eran deseables para evitar este resultado. Una cabeza motriz desalineada era poco común que se fijara por sí sola al estrellarse contra los topes de los rieles. Otro esquema de protección brutal fue pasar de la pista 1 a la 40 y viceversa unas cuantas veces.

La mayoría de los primeros crackers de software eran aficionados a la informática que a menudo formaban grupos que competían entre sí en el descifrado y la difusión de software. Romper un nuevo esquema de protección contra copias lo más rápido posible a menudo se consideraba una oportunidad para demostrar la superioridad técnica de uno, más que una posibilidad de hacer dinero. Algunos aficionados poco calificados tomarían software ya descifrado y editarían varias cadenas de texto sin cifrar para cambiar los mensajes que un juego le diría a un jugador, a menudo algo considerado vulgar. Subir las copias alteradas en las redes de intercambio de archivos proporcionó una fuente de risas para los usuarios adultos. Los grupos de cracker de la década de 1980 comenzaron a publicitarse a sí mismos y a sus habilidades adjuntando pantallas animadas conocidas como intros de crack en los programas de software que descifraron y lanzaron. Una vez que la competencia técnica se expandió de los desafíos del craqueo a los desafíos de crear intros visualmente impactantes, se establecieron las bases para una nueva subcultura conocida como demoscene . Demoscene comenzó a separarse de la "escena warez" ilegal durante la década de 1990 y ahora se considera una subcultura completamente diferente. Muchos crackers de software se han convertido más tarde en ingenieros inversos de software extremadamente capaces; El profundo conocimiento del ensamblaje necesario para romper las protecciones les permite aplicar ingeniería inversa a los controladores para trasladarlos de controladores solo binarios para Windows a controladores con código fuente para Linux y otros sistemas operativos gratuitos . Además, debido a que la música y la introducción de juegos eran una parte tan integral de los juegos, el formato de música y los gráficos se volvieron muy populares cuando el hardware se volvió asequible para el usuario doméstico.

Con el auge de Internet , los piratas informáticos desarrollaron organizaciones secretas en línea. En la segunda mitad de los noventa, una de las fuentes de información más respetadas sobre la "reversión de la protección del software" era el sitio web de Fravia .

La mayoría de los grupos de craqueo conocidos o de "élite" hacen cracks de software completamente por respeto en la " Escena ", no por lucro. A partir de ahí, los crackers eventualmente se filtran a los sitios públicos de Internet por personas / crackers que usan archivos de liberación FTP bien protegidos / seguros, que se convierten en copias completas y, a veces, se venden ilegalmente por otras partes.

La Escena de hoy está formada por pequeños grupos de personas capacitadas, que compiten informalmente para tener los mejores crackers, métodos de craqueo e ingeniería inversa .

+ HCU

La High Cracking University (+ HCU) fue fundada por Old Red Cracker (+ ORC), considerado un genio de la ingeniería inversa y una figura legendaria en RCE, para avanzar en la investigación de la ingeniería de código inverso (RCE). También había enseñado y es autor de muchos artículos sobre el tema, y ​​sus textos se consideran clásicos en el campo y son lectura obligatoria para los estudiantes de RCE.

La adición del signo "+" delante del apodo de un inversor significaba pertenencia a + HCU. Entre los estudiantes de + HCU se encontraban los mejores inversores de Windows de élite en todo el mundo. + HCU publicó un nuevo problema de ingeniería inversa anualmente y un pequeño número de encuestados con las mejores respuestas calificaron para un puesto de pregrado en la universidad.

+ Fravia fue profesora en + HCU. El sitio web de Fravia era conocido como "+ Páginas de ingeniería inversa de Fravia" y lo usó para desafiar a los programadores, así como a la sociedad en general, a "aplicar ingeniería inversa" al "lavado de cerebro de un materialismo corrupto y desenfrenado". En su apogeo, su sitio web recibió millones de visitantes al año y su influencia fue "generalizada".

Hoy en día la mayoría de los graduados de + HCU han migrado a Linux y pocos se han quedado como inversores de Windows. La información en la universidad ha sido redescubierta por una nueva generación de investigadores y practicantes de RCE que han iniciado nuevos proyectos de investigación en el campo.

Métodos

El crack de software más común es la modificación del binario de una aplicación para causar o prevenir una rama clave específica en la ejecución del programa. Esto se logra mediante la ingeniería inversa del código del programa compilado utilizando un depurador como SoftICE , x64dbg , OllyDbg , GDB o MacsBug hasta que el cracker de software alcanza la subrutina que contiene el método principal de protección del software (o desensamblando un archivo ejecutable con un programa como IDA ). Luego, el binario se modifica usando el depurador o un editor o monitor hexadecimal de una manera que reemplaza un código de operación de bifurcación anterior con su complemento o un código de operación NOP para que la rama de clave siempre ejecute una subrutina específica o la salte. Casi todas las grietas de software comunes son una variación de este tipo. Los desarrolladores de software patentados están desarrollando constantemente técnicas como la ofuscación de código , el cifrado y el código de modificación automática para hacer que esta modificación sea cada vez más difícil. Incluso con estas medidas que se están tomando, los desarrolladores luchan para combatir el craqueo de software. Esto se debe a que es muy común que un profesional lance públicamente un simple EXE o Retrium Installer para su descarga pública, eliminando la necesidad de que los usuarios sin experiencia descifren el software ellos mismos.

Un ejemplo específico de esta técnica es una grieta que elimina el período de caducidad de una prueba por tiempo limitado de una aplicación. Estos cracks suelen ser programas que alteran el ejecutable del programa y, a veces, el .dll o .so vinculado a la aplicación. Hay grietas similares disponibles para software que requiere un dongle de hardware . Una empresa también puede romper la protección contra copias de los programas que ha comprado legalmente pero que tienen licencia para un hardware en particular, de modo que no hay riesgo de tiempo de inactividad debido a fallas de hardware (y, por supuesto, no es necesario limitarse a ejecutar el software). solo en hardware comprado).

Otro método es el uso de software especial como CloneCD para escanear y utilizar una aplicación comercial de protección contra copias. Después de descubrir el software utilizado para proteger la aplicación, se puede utilizar otra herramienta para eliminar la protección contra copia del software en el CD o DVD . Esto puede permitir que otro programa como Alcohol 120% , CloneDVD , Game Jackal o Daemon Tools copie el software protegido en el disco duro de un usuario. Las aplicaciones comerciales de protección contra copias más populares que se pueden escanear incluyen SafeDisc y StarForce.

En otros casos, podría ser posible descompilar un programa para obtener acceso al código fuente original o al código en un nivel superior al código máquina . Esto a menudo es posible con lenguajes de scripting y lenguajes que utilizan compilación JIT . Un ejemplo es crackear (o depurar) en la plataforma .NET donde uno podría considerar manipular CIL para satisfacer sus necesidades. El código de bytes de Java también funciona de manera similar en la que hay un lenguaje intermedio antes de que el programa se compile para ejecutarse en el código de máquina dependiente de la plataforma .

La ingeniería inversa avanzada para protecciones como SecuROM , SafeDisc , StarForce o Denuvo requiere que un cracker, o muchos cracker, dediquen mucho más tiempo a estudiar la protección, eventualmente encontrar cada defecto dentro del código de protección y luego codificar sus propias herramientas para "desenvolverlo". la protección automáticamente contra archivos ejecutables (.EXE) y bibliotecas (.DLL).

Hay varios sitios en Internet que permiten a los usuarios descargar cracks producidos por grupos warez para juegos y aplicaciones populares (aunque con el peligro de adquirir software malicioso que a veces se distribuye a través de dichos sitios). Aunque estos cracks son utilizados por compradores legales de software, también pueden ser utilizados por personas que han descargado u obtenido copias no autorizadas (a menudo a través de redes P2P ).

Reinicio de prueba

Muchos programas comerciales que se pueden descargar de Internet tienen un período de prueba (a menudo 30 días) y deben registrarse (es decir, comprarse) después de su vencimiento si el usuario desea continuar usándolos. Para restablecer el período de prueba, las entradas de registro y / o los archivos ocultos que contienen información sobre el período de prueba se modifican y / o eliminan. Con este fin, los crackers desarrollan " reiniciadores de prueba " para un programa en particular o, a veces, también para un grupo de programas del mismo fabricante.
Un método para hacer que los restablecimientos de prueba sean menos atractivos es la limitación del software durante el período de prueba (por ejemplo, algunas funciones solo están disponibles en la versión registrada; las imágenes / videos / copias impresas creadas con el programa obtienen una marca de agua ; el programa se ejecuta por solo 10 –20 minutos y luego se cierra automáticamente). Algunos programas tienen un período de prueba ilimitado, pero están limitados hasta su registro.

Ver también

Referencias