¿Cómo puedo descifrar software?

La única respuesta completamente general a esta pregunta es escribir exactamente el mismo programa usted mismo, pero omita la protección contra copia . Esto siempre funciona y técnicamente responde la pregunta. Llamaremos a este método # 1. A esto lo llamo el “método que requiere que no seas perezoso”. Es claramente inapropiado.

Así que hablemos sobre el método # 2, que generalmente se llama “cracking”. La mayoría de las veces, necesitará tener acceso a una copia del software que ya funciona para poder ver lo que se supone que debe suceder; Esto podría significar que tienes que comprarlo. Puede ser posible sin comprarlo primero, pero es mucho más difícil.

En primer lugar, es importante que comprenda cómo funcionan realmente los programas de computadora. No me refiero a saber cómo escribir Java, o Python, o incluso C. Eso es saber cómo hacer un programa. La mayoría de los programadores tienen una comprensión bastante vaga de lo que sucede al ejecutar el programa una vez que terminan de escribirlo, y esa es el área donde debes convertirte en un experto.

Eventualmente, todos los programas están ejecutando código de máquina, y usted necesita aprender el código de máquina. Considere aprender x86 Assembly, al menos lo suficientemente bien como para escribir algunos ejemplos triviales y leer el código de la máquina y saber lo que está haciendo. Aprenda sobre interrupciones, registros, pilas de llamadas, saltos condicionales, diseño de memoria, acceso de hardware mapeado en memoria y rastreo de binarios en ejecución.

A continuación, necesita la capacidad de interrumpir, leer y modificar un programa en ejecución; Dicha herramienta se denomina depurador, debido a su uso previsto. Windbg es el principal que usa Microsoft para depurar su sistema operativo, y es gratis. En estos días, una protección de copia más elaborada podría tratar de derrotarlo al detectar la presencia de un depurador, pero eso solo lo hace más difícil, no imposible.

En última instancia, su objetivo es omitir o modificar la parte del software que está diseñada para evitar que lo use de forma gratuita, mientras deja todos los demás bits funcionando. Esto es sorprendentemente difícil; Hace algunos años, escuchamos a un usuario en nuestro foro que tenía problemas con nuestro software. Fue un error muy extraño. Finalmente resultó que lo había pirateado, pero el pirata había hecho un trabajo muy malo y había roto algunas cosas importantes. Sugerimos que solucionara el problema comprando el software, ¿sabes? Fue un poco desconcertante, porque nuestra protección contra copias era poco convincente y fácil de eludir, pero de alguna manera el pirata logró arruinarla. Sin embargo, debes admirar la pura burla de alguien que intenta obtener soporte técnico para una versión pirateada.

Desafortunadamente para usted, una gran cantidad de software moderno ha estado abandonando la protección de copia local en favor de colocar parte del programa en un servidor remoto. A menos que pueda robar ese software remoto de alguna manera (difícil / peligroso / puede requerir abandonar el sótano), tendrá que descubrir qué está haciendo y emular esa parte usted mismo, desde cero (consulte el método # 1). Están apostando a que llevará un tiempo, por lo que este software tarda tanto en descifrar. Si intenta realizar ingeniería inversa en la parte en línea, deberá buscar Wireshark, una herramienta para monitorear el tráfico de la red, y aprender a usarla.

Por supuesto, dado todo el trabajo que acaba de hacer para convertirse en un experto en los componentes internos de la computadora, ahora podría ser capaz de escribir software de bajo nivel, como controladores de dispositivos, escáneres de virus, monitores de seguridad, protección contra copias, depuradores, etc. Tales trabajos generalmente están bien pagados, lo que lleva al método # 3: simplemente compre el maldito software. Seriamente.

Desmontaje Básicamente, debe averiguar qué está haciendo el programa desde el binario y luego cambiarlo.

El primer paso es aprender el lenguaje ensamblador para la plataforma que le interesa. Y debe ser muy bueno en ello, porque el software de compilación de lanzamiento tiende a estar altamente optimizado, por lo que el ensamblaje será muy poco intuitivo de leer.

Probablemente tomará al menos unos meses de estudio intenso. No es algo que puedas aprender en una tarde.

Recomiendo pasar su tiempo en cosas más útiles a menos que esté interesado en unirse al mundo criminal.

Cuando no tiene el código fuente del software, la técnica que utiliza se llama ‘ingeniería inversa de software’ . Ejecuta el programa y examina la memoria para extraer la información de diseño e implementación. Las herramientas como dumpers hexadecimales, descompiladores, desensambladores, depuradores son útiles. Leen la memoria y le presentan la información en un formato más legible, por ejemplo, los dumpers hexadecimales pueden ayudarlo a presentar el código binario del programa en ejecución en formato hexadecimal.