Estoy buscando un programa gratuito de código abierto herramienta que compila diversos «clásico» lenguajes de secuencias de comandos, por ejemplo, Shell Korn, ksh, csh, bash, etc. como un ejecutable — y si el script llama a otros programas o ejecutables, para ser incluidos en un solo ejecutable.
Razones:
-
Para ofuscar el código para su entrega a un cliente con el fin de no revelar nuestra Propiedad Intelectual para la entrega en un del cliente propia máquina/sistemas para los cuales no tengo control sobre lo que los permisos que pueda establecer en relación al acceso, por lo que el archivo de programa tiene que ser binario mediante el cual el funcionamiento no puede ser visto fácilmente por la visualización en un editor de texto o
hexdump
visor. -
Para hacer un solo, simplemente implementa el programa para el cliente sin/o una cantidad mínima de cualquier dependencias externas.
Yo prefiero algo simple sin la necesidad de que el administrador de paquetes desde:
-
Yo no puedo confiar en el conocimiento de los clientes a llevar a cabo (de la onu) instrucciones de embalaje y
-
Yo no puedo confiar en las políticas que rigen sus máquinas con respecto a la instalación de los paquetes (y de hecho de terceros).
El más simple enfoque preferido es ser capaz de compilar para la adecuada código máquina ejecutable que se ejecuta fuera de la caja sin ningún tipo de dependencias.
La solución que satisface plenamente mis necesidades sería SHC – una herramienta gratuita, o CCsh una herramienta comercial. Ambos compilar los scripts de shell C, que luego puede ser compilado usando un compilador de C.
Enlaces sobre SHC:
Enlaces sobre CCsh:
fg
a traer a primer plano. Este fue el caso para la mayoría de los scripts básicos, así que no estoy seguro de qué.shc
es no una ofuscación — es trivial para leer el guión de contenido en tiempo de ejecución.strace
osysdig
, o incluso un adecuado análisis de/proc
va a hacer el trabajo de extraer el script original.shc
es no una ofuscación» – yo no disputa que. Pero aquí,shc
no se utiliza para la ofuscación, pero en lugar de proporcionar la secuencia de comandos de shell en forma de código C – que luego pueden ser compilado para una máquina-código binario ejecutable, el cual ofrece la ofuscación en general.shc
todavía requiere la shell y todas las utilidades, a ser instalado. La única cosa que es bueno para es (débil) de ofuscación-U
opción para la fabricación de un imposible de encontrar binario no funciona más en macOS Sierra Alta.Usted podría utilizar esto: http://megastep.org/makeself/
Esto genera un script de shell que se auto-extractos de un paquete de tar.gz archivo en el directorio temporal y, a continuación, puede ejecutar un comando arbitrario en la extracción.
El uso de esta herramienta, usted puede proporcionar solamente una secuencia de comandos de shell para el cliente.
Esta secuencia de comandos, a continuación, extraer su ofbsh ofuscado secuencias de comandos y archivos binarios en /tmp, y ejecutar de forma transparente.
Puede ofuscar scripts de shell con algo así como ofbsh. No fácilmente paquete de otros programas en un único archivo ejecutable para unix, aunque. Normalmente, el enfoque para la instalación sería otra un paquete para su plataforma, el gestor de paquetes (por ejemplo,rpm, deb, pkg) o para proporcionar un tarball para desentrañar en el directorio apropiado.
Si usted necesita un archivo ejecutable que se descomprime el contenido que usted podría ser capaz de utilizar un shell de archivo. Echa un vistazo a la documentación de las shar(1) y ver si eso va a conseguir lo que quieres
Si usted realmente necesidad de secuencias de comandos de la capacidad de pegar varios programas en C juntos, echar un vistazo en el lenguaje Tcl. Tiene una API que está diseñado para trivialmente envoltura de los programas en C que esperar a ver
argv[]
parámetros de estilo. Usted puede incluso integrar los fragmentos de código C en un intérprete de Tcl y la cola junto con varios scripts Tcl.Si usted realmente necesita hacer es opaca, se puede cifrar los scripts tcl y envolver toda la cosa, en algo que unencrypts el tcl secuencias de comandos a un búfer y, a continuación, ejecuta el intérprete de Tcl en ellos. Tcl puede aceptar secuencias de comandos desde un archivo o una
char*
buffer, por lo que el sin cifrar scripts nunca tiene que golpear el sistema de archivos.shc
He modificado el original fuente y se actualiza a una nueva versión con algunos adición de características y correcciones de errores.
Es aquí.
Ejemplo De Uso:
script.sh serán compilados para un binario llamado binary_name
Tenga en cuenta que, usted todavía necesita la necesaria shell para ser instalado en su sistema para ejecutar este archivo ejecutable.
arx es un gran preparador, y usted puede ser capaz de integrar un obfuscator en su flujo de trabajo.
Opciones que están disponibles para usted:
Escribir una lógica en el código que, cuando el código se ejecuta por primera vez en una caja, voy a revisar a ver si todos los paquetes necesarios existir. Y si no, el código automáticamente ir a buscar los paquetes a sí mismo y se los instale…sin preguntar al usuario a hacer nada. La única pregunta a la que el usuario debe ser respondida es «Es aceptar para proceder con la instalación de los citados paquetes? (Y/N)». De nada, fuera de que es demasiado.
Una vez que el código anterior es completa (sí, soy consciente de que no tiene que ser simple para que usted este código, o puede ser que es, no sé de su capacidad de codificación), copiar y pegar su código completado a un sitio como kinglazy.com y un archivo ejecutable real se generará para usted.
Hay muy pocos beneficios de esta opción en particular:
Me pueden faltar algunas cosas en lo que usted pidió, pero yo creo que el de arriba satisface una buena parte de lo que quería.
No estoy seguro si esto funciona en otros scripts, pero ciertamente no para los scripts de shell.
También puede utilizar la versión gratuita de CCsh para compilar un script de shell en un binario:
http://www.comeaucomputing.com/tryccsh/