Зависит от целей.
Скорее всего,вы хотите замедлить кряк вашего продукта.
Вы не можете сделать на 100% anti-crack product,но вы можете сильно замедлить реверс.
Если накрыть программу только протектором,то нет смысла это делать(Пример:Лоадер Interium).
Во-первых,у обоих протекторов слабый Anti-Debug(про syscall у VMProtect известно почти всем).
Рекомендую использовать:
1)
/*(NtCreateJobObject +NtAssignProcessToJobObject + NtSetInformationJobObject).
Так делают в Midnight,чтобы сломать дебаггеры. Они используют системные вызовы,а не nt!!*/
2)
3)найдите малопопулярные способы anti-debug.
Во-вторых,Anti-Vm нормальнный только у VMP,а именно:
inline bool cpuid_is_hypervisor()
{INT CPUInfo[4] = { -1 }; //al-khaser-master
__cpuid(CPUInfo, 1);
return ((CPUInfo[2] >> 31) & 1);}
В-третьих,VMProtect очень известен и на него было много атак за последнее время(примеры:VMPDump,NoVmp).
В-четвертых,на tuts4you считают фемиду более сильнее и сложнее,но если пишите на нативном языке программирования.
Если вам нужна кроссплатформенность ,то LLVM + VMP //
Если сравнивать только по виртуализации кода и мутации,то,безусловно,themida 1337 win.
Я бы выбрал фемиду,если бы самостоятельно делал детект виртуалки и anti-debug.