La única respuesta totalmente general a esta pregunta es escribir exactamente el mismo programa usted mismo pero dejando fuera la protección anticopia. Esto siempre funciona, y técnicamente responde a la pregunta. Llamaremos a este método #1. Yo lo llamo el «método que requiere que no seas perezoso». Es claramente inapropiado.
Así que vamos a hablar del método #2, que normalmente se llama «cracking». La mayoría de las veces, necesitarás tener acceso a una copia del software que ya funcione para poder ver lo que se supone que ocurre; 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 entiendas cómo funcionan realmente los programas informáticos. No me refiero a saber 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 para ejecutar el programa después de que han terminado de escribirlo, y esa es el área en la que tienes que convertirte en un experto.
Al final, todos los programas están ejecutando código máquina, y necesitas aprender código máquina. Considere la posibilidad de aprender el lenguaje Assembler apropiado para su plataforma (x64 para Windows), al menos lo suficientemente bien como para escribir algunos ejemplos triviales y para leer el código máquina y saber lo que está haciendo. Aprenda sobre interrupciones, registros, pilas de llamadas, saltos condicionales, disposición de la memoria, acceso al hardware mapeado en memoria y rastreo de binarios en ejecución.
Luego, necesita la capacidad de interrumpir, leer y modificar un programa en ejecución; una herramienta de este tipo se llama depurador, debido a su uso previsto. Windbg es el principal que utiliza Microsoft para depurar su sistema operativo, y es gratuito. Hoy en día, las protecciones anticopia más elaboradas podrían intentar derrotarle detectando la presencia de un depurador, pero eso sólo lo hace más difícil, no imposible.
En definitiva, su objetivo es omitir o modificar la parte del software que está diseñada para impedirle utilizarlo de forma gratuita, dejando todas las demás partes en funcionamiento. Esto es sorprendentemente difícil; hace algunos años, un usuario de nuestro foro nos contó que tenía problemas con nuestro software. Era un error muy extraño. Al final resultó que lo había pirateado, pero el pirata había hecho un trabajo muy malo y había roto algunas cosas importantes. Le sugerimos que solucionara el problema, ya sabes, comprando el software. Fue un poco desconcertante, porque nuestra protección anticopia era poco convincente y fácil de eludir, y sin embargo el pirata se las arregló para estropearla. Sin embargo, hay que admirar el descaro de alguien que trata de obtener soporte técnico para una versión pirata.
Por desgracia para usted, una gran cantidad de software moderno ha ido abandonando la protección de copia local en favor de poner parte del programa en un servidor remoto. A menos que pueda robar ese software remoto de alguna manera (difícil/peligroso/puede requerir dejar el sótano), va a tener que averiguar lo que está haciendo y emular esa parte usted mismo, desde cero (véase el método # 1). Ellos apuestan a que eso tomará un tiempo, que es la razón por la que tal software toma tanto tiempo para crackear. Si intenta realizar ingeniería inversa de la parte en línea, tendrá que 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 las partes internas de la computadora, ahora podría ser empleable escribiendo software de bajo nivel, como controladores de dispositivos, escáneres de virus, monitores de seguridad, protección contra copias, depuradores, etc. Estos trabajos suelen estar bien pagados, lo que nos lleva al método #3: Simplemente compra el maldito’ software. En serio.