[en] In this work, various techniques are investigated and developed to combat computer piracy and reverse engineering, with the aim of protecting externally compiled programs from individuals with malicious intentions. The proposed and subsequently developed solution consists of a set of applications designed to function as a system. Each application has a specific objective, and the solution is not effective without each of the developed projects. The set of applications includes an authentication server, an application for creating protected files, a graphical interface, and an executable responsible for program protection (Stub). This work explains the most relevant decisions made in the design and implementation of each of the developed projects. Additionally, it provides a detailed explanation of the functioning and architecture of the implemented solution. In detail, the impact of the different techniques employed in the final protected executable is analyzed. Reverse engineering is carried out both statically, using tools like Ghidra, and dynamically, using x32dbg. Various techniques are presented in the documentation, and those applied in the project are as follows: 1. Always Online; 2. Obfuscation; 3. Increased complexity; 4. Anti-debugging; 5. Anti-dumping; 6. Encryption and execution of the original file. Also, a version of the product is presented that is designed and modified to facilitate its understanding and visualization. This way, one can understand what the project monitors and what would be considered an attempted attack. The ultimate goal of this study and implementation is to minimize potential losses that a software development and distribution company could face. This is because once a file is distributed to customers, they can do anything with it.

[es] En este trabajo se investigan y desarrollan diversas técnicas para combatir la piratería informática y la ingeniería inversa, con el fin de proteger programas externos previamente compilados de las manos de personas con malas intenciones. La solución propuesta y posteriormente desarrollada consiste en un conjunto de aplicaciones diseñadas para funcionar como un sistema. Cada aplicación tiene un objetivo específico y la solución no es efectiva sin cada uno de los proyectos desarrollados. El conjunto de aplicaciones incluye un servidor de autenticación, una aplicación para crear archivos protegidos, una interfaz gráfica y un ejecutable encargado de la protección de los programas (Stub). En este trabajo se explican las decisiones más relevantes tomadas en el diseño e implementación de cada uno de los proyectos desarrollados. Además, se proporciona información detallada del funcionamiento y la arquitectura de la solución implementada. En detalle, se analiza el impacto de las diferentes técnicas empleadas en el ejecutable final protegido. Se lleva a cabo ingeniería inversa tanto de forma estática, utilizando herramientas como Ghidra, como de forma dinámica, utilizando x32dbg. En la documentación se presentan diversas técnicas, y aquellas implementadas en el proyecto son: 1. Always Online; 2. Ofuscación; 3. Aumento de la complejidad; 4. Anti-debugging; 5. Anti-dumping; 6. Encriptación y ejecución del archivo original. También se presenta una versión del producto diseñado y modificado para facilitar la comprensión y visualización del mismo. De esta manera, se puede entender qué monitorea el proyecto y qué se consideraría un intento de ataque. El objetivo final de este estudio e implementación es minimizar las posibles pérdidas que una empresa dedicada al desarrollo y distribución de software podría enfrentar. Esto se debe a que una vez que un archivo se distribuye a los clientes, estos pueden hacer cualquier cosa con él.