Runtime packaging
The protected program leaves as a packed encrypted runtime package and reconstructs its execution chunk only when it runs.
A focused Luau protection studio for clean builds, protected runtime packages and dependable Roblox delivery.
Automatic protection stays enabled while Studio keeps the workflow simple.
The protected program leaves as a packed encrypted runtime package and reconstructs its execution chunk only when it runs.
Branches and loops flatten into opaque state machines so static reads no longer match the original structure.
Runtime integrity checks and compatibility probes designed to avoid unnecessary crashes or freezes.
Constants and payloads leave as packed cipher data instead of readable source blocks.
Start free. Upgrade to Elite when you need unlimited builds.
Luau Vanguard v1.0.0. Guía completa para preparar, construir, validar y distribuir paquetes protegidos de Luau.
Luau Vanguard es una herramienta de empaquetado para proyectos que necesitan reducir la exposición del código fuente antes de distribuirlo. El flujo toma un script Luau, lo valida, transforma su representación, lo empaqueta y produce una salida autocontenida que puede reconstruir su contenido durante la ejecución cuando el entorno ofrece un cargador dinámico compatible.
El motor separa tres responsabilidades: análisis del código de entrada, generación del paquete protegido y validación del resultado. Esto permite detectar errores de sintaxis antes de gastar una compilación y evita que una transformación incompleta se entregue como si fuera válida.
Luau con sintaxis válida, incluyendo cadenas largas, números, tablas, funciones y construcciones comunes de Roblox.
Un paquete generado de forma variable, con datos fragmentados y reconstrucción en runtime cuando el loader requerido está disponible.
El proyecto se ejecuta como una aplicación Node.js con Express. La raíz contiene index.html, el motor dentro de lib/, la API en api/ y las pruebas en tests/. La configuración de producción puede usar almacenamiento local o MongoDB mediante las variables de entorno del proyecto.
npm install
npm start
La aplicación expone la interfaz y las rutas de API desde el mismo proceso. En despliegues gestionados, el proceso debe arrancar desde api/index.js.
.lua o .luau.Un build correcto no debe mostrar el código de entrada como texto literal en la salida. Los textos del usuario pasan por las etapas de transformación antes de incorporarse al paquete final.
Studio está pensado para que el usuario no tenga que elegir una combinación de switches internos. La protección se aplica automáticamente y el panel se concentra en las acciones esenciales: cargar, construir, copiar y descargar.
Editor para pegar o cargar el código de origen. Las estadísticas muestran tamaño y caracteres.
Área de solo lectura donde aparece el paquete generado y validado.
Las cuentas guardan un historial limitado de compilaciones para mantener seguimiento básico del uso.
La sesión controla el acceso al Studio y las cuotas de compilación del plan.
El motor sigue un recorrido estructurado, pero usa valores variables en determinadas etapas del empaquetado. Primero limpia el texto de entrada y tokeniza el contenido. Después verifica delimitadores y bloques, renombra locales cuando es seguro hacerlo, transforma accesos de método y procesa literales que pueden ocultarse sin alterar su significado.
El resultado intermedio se encapsula en un paquete externo. Ese paquete fragmenta los datos, cambia el orden de los fragmentos, aplica capas de transformación y añade sellos de integridad. La representación exterior utiliza bloques numéricos decimales para evitar alfabetos de caracteres que pueden producir problemas de parser en determinados entornos.
Finalmente se valida la sintaxis estructural del código generado. Un resultado que no pasa esa etapa se considera un fallo del engine y no debe tratarse como una compilación válida.
En el paquete externo, los bytes están divididos en fragmentos y representados como enteros decimales. En tiempo de ejecución se restaura el orden, se verifica la longitud y se comprueba un sello del contenido. Después se invierten las capas de transformación para obtener el chunk protegido en memoria.
La reconstrucción está diseñada para suceder únicamente cuando el entorno proporciona un loader dinámico compatible, como loadstring o load. Cuando esa función no existe, el paquete termina de forma segura en vez de generar un error de diagnóstico intencional.
La representación exterior está compuesta por identificadores internos, parámetros numéricos y tablas de enteros. El contenido principal protegido no se deja como una llamada literal como print("hola") en la salida generada.
| Componente | Función |
|---|---|
| Fragmentos | Dividen el contenido para evitar una única región continua fácil de inspeccionar. |
| Orden variable | Cambia la disposición de los fragmentos entre compilaciones. |
| Capas | Aplica más de una transformación al contenido antes de almacenarlo. |
| Integridad | Detecta modificaciones accidentales o incompatibles del paquete. |
| Reconstrucción | Forma el contenido de ejecución en memoria antes de entregarlo al loader. |
El validador de entrada acepta una gama amplia de sintaxis Luau, pero el soporte de ejecución depende de la plataforma. Las construcciones más complejas pueden activar una ruta de empaquetado general en lugar de una transformación específica de una característica.
Para Roblox, prueba siempre el resultado en el mismo tipo de entorno donde será distribuido. Diferencias entre Studio, servidor, cliente y entornos con APIs añadidas pueden cambiar la disponibilidad de funciones dinámicas.
Las cuotas dependen de la cuenta. El plan gratuito conserva un límite de compilaciones y los planes superiores pueden tener una cuota ampliada. Además existe un límite de tamaño de entrada para impedir cargas accidentales excesivas y proteger la estabilidad del servicio.
Los builds muy grandes producen salidas mayores porque la representación numérica prioriza compatibilidad sobre compresión extrema. Para proyectos enormes, separa módulos y protege cada componente en lugar de convertir todo el proyecto en un único chunk.
Las rutas principales permiten validar, minificar y generar un paquete protegido. La autenticación controla la ruta de compilación cuando el servicio está configurado con cuentas.
POST /api/validate
POST /api/minify
POST /api/obfuscate
GET /api/health
GET /api/version
La solicitud de compilación utiliza JSON. El campo esencial es source; el nombre opcional se almacena en el historial de la cuenta.
{
"source": "print(1)",
"name": "Example"
}
Los errores de entrada se clasifican antes del build. Un LEX_ERROR indica un carácter o literal que no pudo tokenizarse; un SYNTAX_ERROR indica estructuras incompletas; un GENERATED_SYNTAX_ERROR representa un fallo interno de validación del resultado generado.
Los errores de servidor suelen indicar una dependencia faltante, una variable de entorno inválida, una base de datos no disponible o una entrada que excedió el límite configurado.
Comprueba primero la disponibilidad de un loader dinámico en el entorno objetivo. Después revisa que el mismo entorno pueda ejecutar las APIs usadas por tu script original.
Reconstruye con la versión actual del engine. Si el resultado fue editado manualmente, una comprobación de integridad puede detener la ejecución del paquete.
Valida primero el archivo. Corrige delimitadores, funciones incompletas o literales dañados y vuelve a compilar.
La representación decimal usa datos explícitos para priorizar portabilidad del parser. El crecimiento esperado depende de las capas y del tamaño del script.
No necesariamente. El motor introduce valores variables en el empaquetado, por lo que dos compilaciones del mismo origen pueden producir representaciones diferentes.
La política de almacenamiento depende de la configuración del servidor y del historial asociado a la cuenta. Consulta los términos del servicio antes de subir código sensible.
No se recomienda. El paquete utiliza relaciones internas entre fragmentos, tamaños y sellos; alterar una parte puede invalidar el conjunto.
No. Ningún ofuscador que deba ejecutar código en una máquina controlada por terceros puede garantizar una recuperación imposible. El objetivo práctico es aumentar el trabajo necesario para analizar el resultado.
La seguridad del producto se basa en capas de protección del artefacto: reducción de legibilidad, transformación de literales, fragmentación del contenido, variación entre builds y verificaciones de integridad. Las comprobaciones están diseñadas para ser conservadoras y evitar depender de APIs de depuración específicas del entorno.
El modelo no intenta congelar hilos, saturar el dispositivo ni lanzar excepciones deliberadas ante cada diferencia del entorno. Una protección que genera falsos positivos puede ser más perjudicial que una protección ligeramente menos agresiva que mantenga la ejecución normal.
Condiciones de uso de Luau Vanguard y reglas para la utilización del servicio de protección de código.
Al acceder a Luau Vanguard, crear una cuenta, ejecutar Studio o utilizar cualquier endpoint de la aplicación, aceptas estas condiciones. Si no estás de acuerdo, no utilices el servicio. Estas condiciones se aplican tanto a las funciones gratuitas como a las funciones asociadas a planes de pago o acceso especial.
Debes contar con los derechos necesarios para subir, procesar y distribuir el código que introduzcas en Luau Vanguard. No utilices el servicio para procesar material que no tengas autorización para manejar. La protección técnica de un archivo no transfiere la propiedad intelectual del contenido ni concede derechos sobre las bibliotecas, imágenes, módulos o dependencias de terceros incluidas en él.
El servicio está destinado a proteger y empaquetar software legítimo. No debes utilizarlo para distribuir malware, robo de credenciales, persistencia no autorizada, fraude, abuso de servicios, evasión deliberada de controles de seguridad o cualquier otra actividad prohibida por la legislación aplicable o por las reglas de la plataforma en la que se ejecute el código.
El usuario es responsable de comprobar que su contenido cumple las reglas de Roblox y de cualquier otra plataforma, biblioteca, API o servicio externo. Una compilación válida en el motor no implica que el comportamiento resultante esté permitido por terceros. Las restricciones de cada entorno pueden cambiar y el usuario debe verificar las políticas vigentes antes de distribuir una actualización.
La cuenta y sus credenciales deben mantenerse bajo control del propietario. No compartas sesiones, cookies, contraseñas o tokens de autenticación con terceros. Las cuotas, roles y privilegios se pueden limitar para mantener la estabilidad del servicio. Las cuentas que incumplan estas condiciones pueden perder el acceso de acuerdo con las reglas administrativas del proyecto.
Las cuotas gratuitas y comerciales pueden variar según la configuración del servicio. Los límites de solicitudes, almacenamiento y tamaño de entrada existen para mantener un uso razonable. Luau Vanguard puede experimentar mantenimiento, interrupciones o incompatibilidades temporales y no garantiza disponibilidad ininterrumpida.
No garantizamos que una transformación preserve comportamiento de código de terceros que dependa de APIs privadas, introspección específica, loaders especiales o características fuera del lenguaje soportado. Debes probar el resultado y conservar una copia del original antes de desplegar una actualización.
Un ofuscador no puede hacer que un programa sea matemáticamente imposible de analizar cuando el programa debe ejecutarse en un entorno controlado por otra persona. Luau Vanguard busca elevar el esfuerzo necesario para inspeccionar o modificar un artefacto, pero no promete invulnerabilidad absoluta, ocultación perfecta o imposibilidad de recuperación del contenido.
El usuario es responsable de probar las compilaciones antes de distribuirlas, comprobar la compatibilidad del entorno, verificar licencias y mantener copias del código fuente. Las decisiones de despliegue, seguridad y cumplimiento realizadas a partir de la herramienta son responsabilidad del usuario.
La arquitectura, endpoints, límites y características pueden evolucionar. Las futuras versiones pueden reemplazar componentes internos o cambiar la representación de salida para corregir errores, mejorar compatibilidad o reforzar la protección. Las actualizaciones relevantes se reflejarán en la documentación y en el historial de versiones.
Cuando informes un problema, proporciona una descripción reproducible, el tipo de entorno donde aparece, la versión del proyecto y, cuando corresponda, un ejemplo mínimo que no revele secretos. No compartas contraseñas, cookies, tokens privados ni información sensible en solicitudes de soporte.
Para soporte, dudas comerciales o reportes sobre el servicio, utiliza los canales oficiales enlazados por la aplicación. La información proporcionada en soporte debe limitarse a lo necesario para investigar el problema.
Sign in to open Studio, manage builds and continue protecting your Luau scripts.
Create a free account and get two protected builds. Upgrade when your team needs unlimited capacity.
Here’s where things stand.
Protected control plane.