Enmascaramiento y Enlazado
(solamente para la Edición Completa)


El Comando Shroud

Sinopsis:

     shroud [-clear] [-list] [-quiet] [-out archivo_encriptado] [archivo]

El comando shroud convierte un programa Euphoria, que típicamente consta de un archivo principal más algunos archivos include, en un archivo único y enmascarado (es decir, encriptado) que se puede distribuir fácilmente a terceros. Por defecto, el comando shroud realizará los siguientes pasos:

1. -
Su archivo .ex, .exw o .exu principal se combina con los demás archivos .e que directa o indirectamente incluye. Esto resulta en un archivo Euphoria sin instrucciones include.
2. -
Después de realizar una pasada al programa entero, cualquier constante o rutina no utilizada, se marca para borrado. Aquí pueden aparecer constantes y rutinas adicionales que no se usan. Este proceso de marcado se repite hasta que no hayan más constantes o rutinas para borrar. En una segunda pasada, aquellas constantes o rutinas marcadas se saltean, es decir, no se copian al archivo encriptado. Es común que un programa incluya muchos archivos, pero sólo una parte de las rutinas o constantes realmente se usen.
3. -
Se eliminan todos los comentarios, líneas en blanco, espacios y tabuladores superfluos.
4. -
Para ahorrar espacio, se reemplazan todas las palabras clave y todos los nombres de rutinas internas por códigos de byte simple.
5. -
Todos los nombres definidos por el usuario se convierten a códigos breves sin significado (una o dos letras) elegidos por el programa shroud.
6. -
De los pasos 1 a 5, resulta un archivo muy compacto y encriptado que es completamente ilegible y prácticamente inviolable.

Las opciones pueden ser:
-clear -
Mantiene el código fuente legible. Las rutinas y constantes no utilizadas serán borradas y los comentarios y algunos espacios removidos sin que se altere el código. Se mantienen los nombres originales de variables y rutinas, excepto cuando exista un conflicto entre varios archivos. Use esta opción cuando quiera distribuir un solo archivo de código, pero sin importarle que se pueda leer el código. Si ocurre un error mientras el programa se está ejecutando, el archivo ex.err será perfectamente legible. Si el programa está encriptado, el archivo ex.err contendrá nombres breves sin significado, lo que lo hará muy difícil de comprender.
-list - Produce un listado en deleted.txt de las rutinas y constantes borradas, así como de cualquier símbolo que haya sido renombrado.
-quiet - Suprime los mensajes normales y las estadísticas. Solamente informa los errores.
-out archivo_encriptado - Escribe la salida a archivo_encriptado. Si no se especifica la opción -out, se le pedirá un nombre para el archivo de salida.

Si escribe simplemente:

     shroud
 
sin ninguna opción o nombre de archivo, se le pedirá toda información.

shroud solamente realiza una verificación muy superficial de la sintaxis de su programa. Deberá probar su programa extensamente antes de encriptarlo o enlazarlo.

Se puede distribuir un archivo de inclusión .e encriptado para que la gente pueda incluirlo en sus programas sin que puedan leer su código fuente. Los símbolos declarados como global en su archivo .e principal no se renombrarán o borrarán, por lo tanto sus usuarios podrán acceder a rutinas y variables mediante nombres convencionales.

Se puede encriptar o enlazar un programa que incluye un archivo de inclusión encriptado, sin embargo no se permite usar la opción -clear, debido a que esto reduciría la seguridad del archivo de inclusión encriptado.

Por seguridad, el intérprete Euphoria no realizará ningún trazado sobre un archivo encriptado, salvo que haya sido encriptado con la opción -clear. En la mayoría de los casos es mucho mejor trazar el código fuente original.

Solamente RDS tiene el conocimiento necesario para deshacer la encriptación de un programa, pero no tenemos una herramienta para hacerlo. Aún cuando alguien pudiera deshacer la encriptación, sólo podría recuperar la versión fuente obtenida trás la aplicación de los pasos 1 a 5. Los comentarios y los nombres originales de las rutinas y variables no se pueden recuperar nunca. Siempre mantenga una copia de sus archivos fuente originales!


El Comando Bind

Synopsis:

     bind  [-clear] [-list] [-quiet] [-out archivo_ejecutable] [archivo.ex]
     bindu [-clear] [-list] [-quiet] [-out archivo_ejecutable] [archivo.exu]
     bindw [-clear] [-list] [-quiet] [-out archivo_ejecutable] [-icon archivo.ico] [archivo.exw]

bind (bindw or bindu) hace lo mismo que shroud, y tiene las mismas opciones. Combina su archivo encriptado (o texto limpio) con la Edición de Dominio Público de ex.exe, exw.exe o exu para hacer un archivo ejecutable único e independiente que Ud. puede usar y distribuir convenientemente. Sus usuarios no necesitan tener instalado Euphoria. Cada vez que su ejecutable corre, se realiza una verificación rápida de integridad para detectar cualquier intento de alteración o corrupción del archivo.

Por seguridad, el intérprete Euphoria no realizará ningún trazado sobre un archivo enlazado, salvo que haya sido enlazado con la opción -clear. En la mayoría de los casos es mucho mejor trazar el código fuente original.

Las opciones pueden ser:
-clear -
Lo mismo que en shroud. El .exe contendrá código legible. Si ocurre un error, el archivo ex.err también será legible.
-list -
Lo mismo que en shroud.
-quiet -
Lo mismo que en shroud.
-out archivo_ejecutable -
Esta opción permite elegir el nombre del archivo ejecutable creado por bind. Sin esta opción, bind elegirá un nombre basado en el nombre del principal archivo Euphoria fuente.
-icon archivo[.ico] -
(solamente bindw) Cuando enlaza un programa, puede sustituir el ícono original del archivo exw.exe por otro personalizado de 32x32 usando 256 colores. El original es una figura que se asemeja a E). Windows mostrará en los listados de archivos, esta figura próxima a exw.exe, a su programa enlazado. También se puede cargar este ícono como un recurso, usando el nombre "exw" (ver euphoria\demo\win32\window.exw como ejemplo). Al enlazar su programa, puede sustituir el ícono original por otro de 32x32, 256 colores de 2238 bytes o menos de tamaño. Se pueden usar otras dimensiones, en tanto su tamaño sea menor o igual a 2238 bytes. El archivo debe contener un único ícono de imagen (según sea necesario, Windows lo agrandará o achicará). En la Edición Completa se incluye el archivo de ícono por defecto E), euphoria.ico. Puede enlazarlo, o distribuirlo separadamente, con o sin cambios.

Si escribe simplemente:

     bind (o bindw o bindu) 
 
sin ninguna opción o nombre de archivo, se le pedirá toda información.

Sólo se pueden enlazar los intérpretes de Edición de Dominio Público. Los usuarios de la Edición Completa de Euphoria para DOS32 + WIN32 tendrán ex.exe (Ed. Completa) y pdex.exe (Dominio Público), así como exw.exe (Ed. Completa) y pdexw.exe (Dominio Público) en euphoria\bin. El programa bind (bindw) usará el archivo pdex.exe (pdexw.exe) para enlazar. En Linux o FreeBSD, tendrá exu (Ed. Completa) y pdexu (Dominio Público), con pdexu usado para enlazar.

Un programa Euphoria de una sola línea creará un archivo tan grande como el intérprete con el que está binding, pero el tamaño se incrementa muy lentamente a medida que agrega líneas al programa. Al enlazar, el editor entero de Euphoria, ed.ex, agrega sólo 18K al tamaño del intérprete. Los tres intérpretes están comprimidos para reducir su tamaño. exw.exe y exu están comprimidos con UPX (ver http://upx.sourceforge.net). ex.exe está comprimido con la herramienta que viene con el expansor CauseWay DOS. ex.exe es el más grande de los tres, debido a que incluye varias rutinas gráficas que no forman parte de exw.exe o exu. Nota: En algunos casos, un ejecutable comprimido puede disparar un mensaje de alerta desde el programa antivirus. Esto se debe a que el programa antivirus ve al archivo comprimido como anormal. Si demo\sanity.ex se ejecuta correctamente, puede ignorar con total seguridad esas alertas. En caso contrario contáctese con RDS.

Los primeros dos argumentos devueltos por la rutina de librería command_line() serán levemente diferentes cuando el programa está enlazado. Ver library.doc por más detalles.

Un archivo ejecutable enlazado puede manejar la redirección de las entrada y salida estándares, por ejemplo:

        myprog.exe < file.in > file.out
Si escribió un pequeño archivo .bat de DOS (por ejemplo, miprog.bat) que contenía la línea "ex miprog.ex" no podrá redirigir la entrada y salida estándares de la siguiente forma:
        miprog.bat < file.in > file.out     (no funciona en DOS!)
Sin embargo, debería usar la redirección en líneas individuales dentro de archivos .bat.