MoonVeil provides a compatibility layer to support users which already use Luraph’s suite of Macros.

Many of Luraph’s macros do features or optimizations that are already built into MoonVeil. Though MoonVeil will still accept scripts which try to use these macros, they will have no effect. Below is a table of compatibility between Luraph and MoonVeil.

Luraph MacroMoonVeil AliasDescription
LPH_ENCFUNCMV_ENC_FUNCVirtualizes and encrypts functions
LPH_ENCSTRMV_NO_OPNot applicable
LPH_ENCNUMMV_NO_OPNot applicable
LPH_CRASHMV_CRASHCrashes the VM
LPH_NO_VIRTUALIZEMV_OMITOmits a function from all obfuscation steps
LPH_JITMV_NO_OPMoonVeil provides built-in optimizations
LPH_JIT_MAXMV_NO_OPMoonVeil provides built-in optimizations
LPH_NO_UPVALUESMV_NO_OPNot applicable
LPH_LINEMV_LINECurrent line number
LPH_OBFUSCATEDMV_OBFUSCATEDDetects obfuscation

A minor difference between Luraph and MoonVeil is that MoonVeil does not automatically virtualize your script (outside of the Virtualize Script option). Instead, you can selectively virtualize blocks using the MV_VM or MV_ENC_FUNC macros. This gives you much more control over the obfuscation process, enabling you to have much better performance.

Though you can use Luraph’s macros in MoonVeil, MoonVeil additionally provides many other macros which are not available in Luraph.