# Getting Started Tutorial - NiceProtect Documentation

> A step-by-step tutorial for new users. Learn how to open your project, select protection options, and build a protected release in NiceProtect.

Canonical HTML: <https://www.niceprotect.com/help/quick_start.htm>

## Quick Start Guide


Welcome to the **DotFix NiceProtect** Quick Start guide. This tutorial is designed to help you secure your first application in minutes without requiring deep knowledge of reverse engineering or complex configuration.


NiceProtect is designed to work out-of-the-box for most **Delphi**, **Visual Basic**, and **C++** applications. Follow the workflow below to apply standard protection layers.

#### Step 1: Open Your Application


Launch DotFix NiceProtect. Use the **Open** button or drag-and-drop your compiled executable file (EXE, DLL, or OCX) into the main window.

![Opening an executable file in DotFix NiceProtect](https://www.niceprotect.com/images/help/open.png)

**Note:** Ensure you are opening the compiled binary, not the source code project file. For the best security results, we recommend protecting the **unpacked**, original binary generated by your compiler.

#### Step 2: Configure Basic Protection


Navigate to the **Protection Options** tab. Here you will see various security options. For a basic setup, we strongly recommend enabling the following core features:

- **[Packing](https://www.niceprotect.com/help/packing.htm) :** This compresses your executable, reducing its file size and protecting resources (images, strings) from easy extraction.

- **[Obfuscation](https://www.niceprotect.com/help/obfuscation.htm) :** This is critical for Delphi and VB6 applications. It renames internal structures (RTTI, form names, event handlers) to meaningless strings, making the code logic much harder to understand.

- **Anti-Tracing:** Prevents debuggers from stepping through your code line-by-line.

![Configuring protection options](https://www.niceprotect.com/images/help/options.png)

#### Step 3: Setup Trial Limitations (Optional)


If you are distributing a trial or demo version of your software, you can enable a "Nag Screen" (Startup Message). This forces the user to view a purchase reminder every time they launch the application.


Go to the **Custom Messages** tab and check **Use startup message**. You can use the default text or customize it:

*"You are currently using the DEMO version of this program. Functionality is limited. To remove these restrictions, please purchase a license at www.yoursite.com."*

![Setting up a startup nag screen](https://www.niceprotect.com/images/help/onstart.png)


This method is a proven psychological driver for conversion, reminding users that the software is a commercial product.

#### Step 4: Execute Protection


Once configured, return to the **Protection** tab and click the **Start** button.

![Processing protection log](https://www.niceprotect.com/images/help/protect.png)


The log window will display the protection process in real-time:

- Analyzing PE header and sections.

- Encrypting code blocks.

- Applying mutations and virtualization.

- Compressing the final binary.


Once finished, a new file (usually named `your_app_protected.exe`) will be created. Test this file to ensure it runs correctly on your system.

### Beyond Basic Protection


While the steps above provide a solid security envelope (shell protection), sophisticated attackers may still attempt to dump the process from memory. To achieve **professional-grade security**, you must move beyond the basics:

- **Use MAP Files:** By generating a [MAP file](https://www.niceprotect.com/help/what_is_it_a_map_file.htm) during compilation, you allow NiceProtect to "see" inside your functions and apply virtualization to the algorithm itself, not just the file wrapper.

- **Virtualize Critical Logic:** Use [SDK Markers](https://www.niceprotect.com/help/virtualize_markers.htm) inside your source code to mark sensitive algorithms (e.g., license checking, proprietary math). Code inside these markers is converted to virtual machine bytecode, which is extremely difficult to reverse engineer.
