<< Click to Display Table of Contents >> Navigation: WinLicense > Protecting an application > XBundler |
XBundler allows you to embed DLLs and data files inside a protected application, simplifying the distribution of your application to your customers and avoiding your DLLs and data files being used by third party software. XBundler compresses and encrypts all of the embedded files without affecting the ability of your application to function correctly and with no additional coding.
When your application wants to access your embedded DLLs and/or data files, XBundler will not write the embedded files to disk. Instead, XBundler uses a special application hooks to detect when an application is accessing embedded DLLs and/or data files and will decrypt/encrypt the required block of data.
Scenarios for using XBundler
XBundler can be used in many scenarios. The most common ones are:
•Protect your DLLs from being reused by third party software: When you select not to write your files to disk, XBundler will keep your files totally encrypted and will access them directly in memory after decrypting the necessary blocks of data. Given that your DLLs are not written to disk, third party software cannot reuse your DLLs for their own benefits.
•Solve "DLL Hell" issues: XBundler will guarantee that your application is always using your embedded DLLs. This will avoid users and applications from modifying/deleting your DLLs hence stopping your application from working.
•Protect your DLLs against reverse engineering: XBundler encrypts your DLL and/or data files to prevent them from being extracted directly from your application. Besides, Themida/WinLicense will seat on top of XBundler supervising the system against any cracking activity, protecting your embedded DLLs and your main application with the latest technology in software protection.
•Compress your DLLs and data files: XBundler will compress all of your embedded DLLs and data files reducing their size by 35-60% and using a very fast decompression algorithm which does not decrease your applications performance.
•Protect your media files: If your application uses exclusive designs with graphics, music, video, etc. XBundler can embed all of these media files with your application to avoid other people directly viewing them, or using them for their own software.
XBundler Files Panel
To add files to be embedded inside your final protected application, you can either drag the file to the XBundler panel or select a file using the Add button. The file will appear in the list if it has not already been included.
•The Virtual File column displays the location where a specific file can be found in runtime in case that you select the option to extract the file to disk. You can create your own extraction hierarchies by creating subfolders in the Virtual File column. To do so, just right-click on the XBundler files panel and select the option "Add Folder". If you want to change the root folder for the virtual file, select the option "Add Root Folder". The current defined values are:
•%APP_FOLDER%: This is the folder from where you protected application is executed
•%WIN_FOLDER%: Windows folder
•%WINSYS_FOLDER%: Windows System folder
•%USER_DOCS%: Current user documents folder
•%LOCAL_APP_DATA%: Current user local AppData folder
•%COMMON_APP_DATA%: Common application data for all users
•The Mode column allows you to select if the file will be extracted to disk in runtime or the file will never be extracted to disk. When the file is not extracted to disk, XBundler uses process hooking in order to detect file accesses and redirect them to specific locations within the process space. If you want to extract the file to disk, there are several types of extraction options to suit different developer needs.
•The Original File Location column specific the location of the file on disk. This is used in protection time in order to read the file to embed. If you don't want to work with full paths, you can use special constants for the file location, like %WINLICENSE_FOLDER%, %INPUT_FILE_FOLDER%, %OUTPUT_FILE_FOLDER%, %PROJECT_FOLDER%. Example:
%INPUT_FILE_FOLDER%\files\my_file.dat
XBundler Options
•Delete extracted on exit: In case that for any of your embedded files you have selected the option "Extract to disk", this option will delete the extracted file once that the application exits. If you are selecting the option "Never extract to disk" for all your embedded files, this option has no effect.
•Hook FindFirst/FindNext File APIs: This option hooks the FindFirst/FindNext Windows API. These APIs are normally used by Windows when files are going to be listed in a Windows Shell Dialog. If you want to make your embedded files visible to W¡ndows Shell Dialogs or you want to enumerate your embedded files from inside your application (using FindFirstFile, FindNextFile, etc.) you have to select this option. Note that even if you see your embedded files from inside your application when you select this option, your embedded files will NOT be visible to users and other applications.
•Maximize speed (decrease protection): This option will decrease the encryption/virtualization of the XBundler protection code to avoid a performance decrease in case that you access to your embedded files quite frequently.
•ActiveX support: This option allows you to register your embedded DLLs/OCXs before your application starts. It has the same effect as if "regsvr32" is performed before your application starts. Notice that in order to register your embedded DLLs/OCXs, your application needs to be running with administrator's rights. If the application is running with restricted user rights, the embedded DLLs won't be register in the system. You have to make sure that the protected application runs with administrator's rights the first time that is executed in the system to allow registration of embedded DLLs.
•Hook GetPrivateProfile APIs: This options hooks the Win32 GetPrivateProfile APIs in case that your application uses those functions to access to the files that are going to be bundled (and never written to disk). This option should be checked if your are bundling .INI files with the option "Never write to disk".
•Exception support in DLLs: Some DLLs generates exceptions (handled) on start and that interacts with the exception handling in the protection code. If any of your embedded DLLs produce handled exceptions on start, you have to check this option.
Changing the Extraction Mode for all selected files
If you want to change the extraction type for several files at the same time, just select all wanted files and press:
▪CTRL + 0 = "Never Write to disk"
▪CTRL + 1 = "Extract always"
▪CTRL + 2 = "Extract if not exists"
▪CTRL + 3 = "Extract if older exists"
▪CTRL + 4 = "Extract if different exists"