[ca] En aquest treball s'investiguen i desenvolupen diverses tècniques per combatre la pirateria informàtica i l'enginyeria inversa, amb la finalitat de protegir programes externs prèviament compilats de mans de persones amb males intencions. La solució proposada i posteriorment desenvolupada consisteix en un conjunt d'aplicacions dissenyades per funcionar com un sistema. Cada aplicació té un objectiu específic i la solució no és efectiva sense cada un dels projectes desenvolupats. El conjunt d'aplicacions inclou un servidor d'autenticació, una aplicació per crear arxius protegits, una interfície gràfica i un executable encarregat de la protecció dels programes (Stub). En aquest treball s'expliquen les decisions més rellevants preses en el disseny i implementació de cada un dels projectes desenvolupats. A més, proporciona informació detallada del funcionament i l'arquitectura de la solució implementada. Detalladament, s'analitza l'impacte de les diferents tècniques emprades en l'executable final protegit. Es du a terme enginyeria inversa tant de forma estàtica, utilitzant eines com Ghidra, com de forma dinàmica, utilitzant x32dbg. En la documentació s'han presentat diverses tècniques, i les implementades en el projecte són: 1. Always Online; 2. Ofuscació; 3. Augment de la complexitat; 4. Anti-debugging; 5. Anti-dumping; 6. Xifrat i execució de l'arxiu original. També es presenta una versió del producte dissenyat i modificat per facilitar-ne la comprensió i visualització. D'aquesta manera, es pot entendre què monitoritza el projecte i què es consideraria un intent d'atac. L'objectiu final d'aquest estudi i implementació és minimitzar les possibles pèrdues que una empresa dedicada al desenvolupament i distribució de programari podria enfrontar. Això és perquè un cop un arxiu es distribueix als clients, aquests poden fer qualsevol cosa amb ell.

[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.