Descifrado de software

Compartir Imprimir Citar
Modificación del software, a menudo para utilizarlo gratis

Descifrado de software (conocido como "romper" 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 (software cracker), especialmente funciones de protección contra copia (incluida la protección contra la manipulación de software, 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 crackeo se refiere a los medios para lograrlo, 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, loader o crack sin disco. Un keygen es un generador de números de serie de productos hechos a mano que a menudo ofrece la capacidad de generar números de serie de trabajo en su propio nombre. Un parche es un pequeño programa informático que modifica el código máquina de otro programa. Esto tiene la ventaja de que un cracker no incluye un ejecutable grande en una versión cuando solo se modifican 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 un 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 warez scene. Una guerra nuclear ha demostrado que la protección puede no activarse en ningún momento para que sea una grieta válida.

El descifrado de software está estrechamente relacionado con la ingeniería inversa porque el proceso de atacar una tecnología de protección contra copias es similar al proceso de ingeniería inversa. La distribución de copias crackeadas es ilegal en la mayoría de los países. Ha habido demandas por software de craqueo. Puede ser legal usar software descifrado en ciertas circunstancias. Sin embargo, los recursos educativos para la ingeniería inversa y el cracking de software son legales y están disponibles en forma de programas Crackme.

Historia

La primera protección contra copia de software se aplicó al software para Apple II, la familia Atari de 8 bits y las computadoras 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 el Apple II, el sistema operativo controla directamente el motor paso a paso que mueve el cabezal de la unidad de disquete y también interpreta directamente los datos sin procesar, llamados nibbles, leídos de cada pista para identificar los sectores de datos.. Esto permitió una protección compleja contra copia de software basada en disco, almacenando 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 vías no tenían por qué ser anillos perfectos, sino que se podían seccionar para que los sectores pudieran escalonarse a lo largo de vías desplazadas superpuestas; la versión más extrema se conoce como vía en espiral. También se descubrió que muchas unidades de disquete no tenían un límite superior fijo para el movimiento de la cabeza 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 dichos disquetes protegidos, ya que el DOS estándar suponía que todos los discos tenían un diseño uniforme de 35 pistas, 13 o 16 sectores. Los programas especiales de copia de nibble, como Locksmith y Copy II Plus, a veces podían duplicar estos discos utilizando una biblioteca de referencia de métodos de protección conocidos; cuando se descifraban los programas protegidos, se les quitaba por completo el sistema de protección contra copia y se transferían a un disco de formato estándar que cualquier programa de copia normal de Apple II podí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 para el 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, lo que permitió que la memoria sin procesar se decodificara en códigos de operación de la CPU, y esto se utilizaría para examinar qué iba a hacer la protección contra copia 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í misma debe ejecutarse en la CPU original, además del software pirateado, la simulación a menudo se ejecutaría extremadamente lentamente incluso a la velocidad máxima.

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 en el disco que la unidad de disco no podía leer intencionalmente. El software buscaría estos sectores cuando el programa se estaba cargando y dejaría de cargar si no se devolvía un código de error al acceder a estos sectores. Había programas de copia especiales disponibles que copiaban el disco y recordaban 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 quitada, se puede usar un destornillador pequeño para disminuir 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 hizo una copia sin descifrar. 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 involucraban algún tipo de datos de disco malformados, como un sector que podría devolver datos diferentes 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 controlador BIOS en el dispositivo "inteligente" de Atari. unidades 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 sucedería nada, pero si el software se hubiera movido a la RAM, el software estaría deshabilitado. 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 descifradas del software eran deseables para evitar este resultado. Un cabezal de transmisión desalineado era raro, por lo general se arreglaba solo al romperse contra los topes del riel. Otro esquema de protección brutal consistía en pasar de la pista 1 a la 40 y viceversa unas cuantas veces.

La mayoría de los primeros piratas informáticos eran aficionados a la informática que a menudo formaban grupos que competían entre sí para piratear y difundir 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 en lugar de una posibilidad de ganar dinero. Por lo general, los piratas informáticos no se beneficiaban materialmente de sus acciones y su motivación era el desafío mismo de eliminar la protección. Algunos aficionados poco calificados tomarían software ya descifrado y editarían varias cadenas de texto sin cifrar en él para cambiar los mensajes que un juego le diría a un jugador, a menudo algo considerado vulgar. Cargar las copias alteradas en las redes de intercambio de archivos proporcionó una fuente de risas para los usuarios adultos. Los grupos de crackers de la década de 1980 comenzaron a publicitarse a sí mismos y a sus habilidades adjuntando pantallas animadas conocidas como introducciones crack en los programas de software que crackeaban y lanzaban. Una vez que la competencia técnica se expandió de los desafíos de descifrar a los desafíos de crear introducciones visualmente impactantes, se establecieron los cimientos para una nueva subcultura conocida como demoscene. Demoscene comenzó a separarse de la ilegal "warez scene" 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 requerido para descifrar las protecciones les permite aplicar ingeniería inversa a los controladores para convertirlos 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 introducción de música y juegos era 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 años noventa, una de las fuentes de información más respetadas sobre "inversión de protección de software" era el sitio web de Fravia.

+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 escrito muchos artículos sobre el tema, y sus textos se consideran clásicos en el campo y son de lectura obligatoria para los estudiantes de RCE.

La adición de "+" firmar delante del apodo de un inverso significaba membresía en +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 profesor en +HCU. El sitio web de Fravia se conocía como "+Fravia's Pages of Reverse Engineering" y lo usó para desafiar a los programadores, así como a la sociedad en general, a "ingeniería inversa" el "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". En su sitio, +Fravia también mantuvo una base de datos de los tutoriales generados por los estudiantes de +HCU para la posteridad.

Hoy en día la mayoría de los egresados de +HCU han migrado a Linux y pocos se han quedado como reversores 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 bifurcación 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, OllyDbg, GDB o MacsBug hasta que el cracker de software llegue a la subrutina que contiene el método principal para proteger el software (o desensamblando un archivo ejecutable con un programa como como IDA). Luego, el binario se modifica utilizando el depurador o un editor hexadecimal como HIEW o monitor 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 bifurcación clave siempre ejecute una subrutina específica o la salte. Casi todos los cracks de software comunes son una variación de este tipo. Los desarrolladores de software propietario están constantemente desarrollando técnicas como la ofuscación de código, el cifrado y el código automodificable para hacer que esta modificación sea cada vez más difícil. Incluso con la adopción de estas medidas, los desarrolladores luchan por combatir el cracking de software. Esto se debe a que es muy común que un profesional publique un EXE crackeado simple o un instalador de Retrium 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 un crack que elimina el período de caducidad de una prueba de tiempo limitado de una aplicación. Estos cracks suelen ser programas que modifican el ejecutable del programa y, a veces, el.dll o.dll vinculado a la aplicación y el proceso de modificación de los archivos binarios originales se denomina parcheo. Grietas similares están disponibles para software que requiere un dongle de hardware. Una empresa también puede romper la protección contra copia 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 una falla del 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 para el uso de una aplicación de protección de copia comercial. Después de descubrir el software utilizado para proteger la aplicación, se puede usar 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 populares de protección de copia 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 de máquina. Esto suele ser posible con lenguajes de secuencias de comandos y lenguajes que utilizan la compilación JIT. Un ejemplo es el cracking (o depuración) en la plataforma.NET donde uno podría considerar manipular CIL para lograr las necesidades de uno. El código de bytes de Java también funciona de manera similar, ya que hay un lenguaje intermedio antes de compilar el programa para ejecutarlo 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 crackers, pasen mucho más tiempo estudiando la protección, encontrando eventualmente cada falla dentro del código de protección y luego codificando sus propias herramientas para "desenvolver" la protección automáticamente de archivos ejecutables (.EXE) y de biblioteca (.DLL).

Hay una serie de sitios en Internet que permiten a los usuarios descargar cracks producidos por grupos warez para juegos y aplicaciones populares (aunque corren el riesgo 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).