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

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