Obfuscator configurations

The configurations and versions of obfuscators we evaluated.

VMProtect v3.5

Protection OptionsThe simplest configuration we recommendThe most critical configuration we can handle
Functions for ProtectionProtectionCompilation TypeVirtualizationUltra (Virtualization+Mutation)
Lock To Serial NumberNoNo
OptionsFileMemory ProtectionNoYes
Import ProtectionNoYes
Resource ProtectionNoYes
Pack the Output FileNoYes
DetectionDebuggerNoNo
Virtualization ToolsNoYes
AdditionalVM Segments.vmp.vmp

Settings in “Additional” options have no influence on execution, so they are irrelevant to our experiment.

VMProtect v2.13.8

Protection OptionsThe simplest configuration we recommendThe most critical configuration we can handle
Procedures for protectionCompilation TypeVirtualizationUltra (Virtualization+Mutation)
OptionsLevelMaximum protectionMaximum protection
DetectionDebuggerNoNo
Virtualization toolsNoYes
CompilationVirtual machines11

Code Virtualizer v2.2.2

Extra OptionsThe simplest configuration we recommendThe most critical configuration we can handle
Location of Protection CodeInsert in last sectionInsert in last section
Virtualize StringsDisableAnsi/Unicode/Ansi+Unicode Strings
Compress Virtual MachineNoYes
Strip RelocationsNoYes
Fake Stack EmulationNoYes

“Location of Protection Code” and “Strip Relocations” have no influence on execution. Program for knowledge leaking has no strings. So “Virtualize Strings” and the former two settings are irrelevant.

Code Virtualizer v3.0.7

OptionsThe simplest configuration we recommendThe most critical configuration we can handle
Protection OptionsLocation of Protection CodeInsert in new SectionInsert in new Section
Encrypt Strings in VM macrosNoneANSI Strings, Unicode Strings
Compress Virtual MachineDisableEnable
Extra Protection OptionsEntry Point VirtualizationNoYes
Strip RelocationsNoYes
Optimize for Windows on ARMNoNo

We do experiment on Intel x86 instructions, so “Optimize for Windows on ARM” is not cosidered. Advanced options are irrelevant to the experiment, since they have no effect on the knowledge leaking process.

Themida v2.2.2

OptionsThe simplest configuration we recommendThe most critical configuration we can handle
Protection OptionsAnti-Debugger DetectionDisableDisable
Advanced API-WrappingDisableLevel 2
CompressNoneApplication, Resources, SecureEngine
Anti DumpersNoYes
Anti-PatchingNoYes
Entry Point ObfuscationNoYes
Metamorph SecurityNoYes
Monitor BlockersNoYes
Resources EncryptionNoYes
Memory GuardNoYes
Dephi/BCB Form ProtectionNoYes
VMWare/Virtual PCYesYes
When Debugger FoundDisplay MessageDisplay Message
Advanced OptionsHide from PE scannerStandardStandard

Other options in advanced options are irrelevant to the experiment, since programs for knowledge leaking do not need extra dll files, .NET assemblies, manifest files and splash images.

Themida v3.0.7

OptionsThe simplest configuration we recommendThe most critical configuration we can handle
Protection OptionsAnti-Debugger DetectionDisableDisable
Advanced API-WrappingDisableEnable
Compress and EncryptNoneApplication, Resources, SecureEngine
Encrypt Strings in VM macrosNoneANSI Strings, Unicode Strings
Extra Protection OptionsDetect File/Registry MonitorsNoYes
Entry Point VirtualizationNoYes
Anti-File patchingNoYes
Anti-SandboxNoYes
Perform Protection checks on VM macrosNoYes
Allow execution under VMware/Virtual PCYesYes

Extra and advanced options are irrelevant to the experiment, since our programs for knowledge leaking have nothing to do with network interaction and extra dll/data loading(XBundle). Splash image, manifest file and antivirus certificate are also unneeded.

Obsidium v1.6.7

OptionsThe simplest configuration we recommendThe most critical configuration we can handle
Basic settingsEncrypt resourcesNoYes
Remove exportsNoYes
CompressionNoYes
Alternate compression methodNoYes
Debugger checksNoNo
Application password:NoNo
Set environment variablesNoNo
Advanced settingsKeep overlaysNoYes
Control overlay accessNoYes
Encrypt overlaysNoYes
Alternate control methodNoYes
Alternate control method 2NoYes
Visual Studio fixNoYes
Void unneeded resourcesNoYes
Delphi/BCB obfuscationNoYes
Remove bytes at OEPNoYes
Disallow execution in virtual machinesNoNo
Delphi/BCB 3rd-party compatibilityNoYes
Legacy import protectionNoYes
Runtime patchingNoYes
Runtime tracingYesYes
Check encrypted sectionsNoNo
Don’t display any messagesNoYes
Disable API emulationNoYes
Dynamic protection API accessNoYes
Keep import dataNoYes
Let windows load DLLsNoYes
Verify file sizeNoYes
Random section namesNoYes
Limit number of instancesNoNo
Don’t hook DLLsNoYes
lLicense expiration system clock checkPreserve PDB signatureNoYes
lLicense expiration system clock checkPreserve PDB signatureNoYes