Description
An Obfuscator is a software tool designed to transform the source code of a game, app or program into a version that is significantly more difficult for humans to understand, while still maintaining its original functionality. It does this by renaming variables, methods, and classes to nonsensical or misleading names, and by altering the code structure in ways that obscure its logic and flow.
The primary purpose of using an Obfuscator is to protect the intellectual property of the software. By making the code harder to read and analyze, it becomes more challenging for unauthorized individuals to reverse-engineer, replicate, or modify the software. This added layer of security helps prevent software piracy, intellectual property theft, and unauthorized tampering, thereby safeguarding the developer's work and investment.
Obfuscator
GuardingPearSoftware's developed Obfuscator is designed for Unity, it considers Unity’s unique characteristics, like MonoBehaviours, ScriptableObjects, Serialization and Reflection, giving you a powerful but easy, and out-of-the box working tool.
Integration
Game developers face a mountain of tasks every day. That's why our Obfuscator was designed for seamless integration into your existing workflow. No complex setup, no headaches – just pure plug & play functionality. Once activated, it automatically obfuscates your code during each build, effortlessly safeguarding your game without slowing you down.
Figure 1 - The integration is designed to be plug & play.
Code - Example
The most important and known feature of an Obfuscator is the so called 'Lexical Obfuscation'. This technique targets the most accessible elements of your code: the identifiers. For instance, class names like 'Sale' could be transformed into 'a', method names such as 'CalculateDiscount' might become 'p', and variable names like 'customerData' could turn into 'x'. This process strips away the semantic meaning that makes the code understandable, significantly increasing its difficulty to interpret.
Figure 2 - Example: Your code before and after obfuscation.
String - Example
String obfuscation is a technique that transforms readable strings in your code into a format that is difficult to understand or recognize. This provides the advantage of protecting sensitive information, from being easily extracted or deciphered by unauthorized users.
Warning
Never store passwords or api keys inside your shipped application.
Figure 3 - Example: Your strings before and after obfuscation.
Control Flow - Example
Deliberate obscuring the natural flow of your code, dictated by loops, conditional statements, and function calls. Imagine a labyrinthine structure where the path is convoluted, making it difficult to follow the program's logic.
Figure 4 - Example: Your method flow before and after obfuscation.
Note
Only supported on Mono builds. IL2CPP cannot interpret this protection scheme. Which is also on purpose.
Security - Example
Additional security measures are also available to enhance your application's protection. These include generating random code, suppressing ILDasm (the disassembler in the IDE), and implementing micro checks. These techniques make your code more difficult for attackers to read and analyze, thereby increasing overall security.
Figure 5 - Enhanced security measures are available to improve your application's protection.
Settings
Since every game is unique, it requires a customized approach to protection. The Obfuscator offers a wide range of customizable settings that allow you to fine-tune the protection strategy that best suits the needs of your game.
Figure 6 - Customize the obfuscation, security, compatibility and integration.