Start with the functions that contain valuable decisions, not the functions that consume the most CPU. Good first candidates include license and entitlement evaluation, integrity verdicts, proprietary algorithm selection, protected resource access, and compact routines that derive values needed by premium features.
A useful selection exercise has three passes. First, map the assets an attacker would want to understand or patch. Second, profile the candidate functions in a realistic release build. Third, reduce each protected boundary until it contains only the security-sensitive decision.
Avoid placing an entire subsystem inside a virtual machine. Networking, file parsing, user-interface code, large framework methods, tight loops, and functions called thousands of times per second usually create cost without proportional protection. Keep bulk processing native and virtualize the smaller routine that validates inputs, selects parameters, or derives the protected state.
Score each candidate against five questions:
Does the function contain proprietary or enforcement logic?
Can an attacker bypass the feature by patching one native branch outside it?
Is the execution frequency low enough for the selected VM?
Does it have clear inputs, outputs, and exception behavior?
Can the protected and unprotected versions be tested automatically?
Use different protection strengths deliberately. A lightweight transformation may be appropriate for broad supporting checks, standard virtualization for important decisions, and the strongest combined mode for very small crown-jewel routines. Document the reason for every protected function so future maintainers can tell whether a setting is intentional.
Finally, benchmark the complete customer workflow rather than one isolated function. Startup, activation, project loading, exports, background services, and update checks can reveal very different costs. A successful first protection profile is not the one with the largest protected region. It is the one that meaningfully raises analysis cost while remaining invisible to legitimate users.