Ejecutar el archivo .exe incrustado en el script Python

¿Cómo puedo cargar un archivo exe, almacenado como una cadena codificada en base64, en la memoria y ejecutarlo sin escribirlo en el disco?

El punto es, poner algún tipo de sistema de control / contraseña / serie en su lugar y comstackrlo con py2exe. Entonces podría ejecutar ese archivo incrustado cuando quiera en mi código.

Todos los mecanismos que Python tiene para ejecutar un proceso secundario requieren un nombre de archivo.

Y también lo hace la función CreateProcess subyacente en la API de Win32, de modo que no hay ni siquiera una forma fácil de evitarlo bajando a ese nivel.

Hay una manera de hacer esto bajando a ZwCreateProcess / NtCreateProcess . Si sabe cómo usar la API de NT de bajo nivel, esta publicación debe ser todo lo que necesita para entenderla. Si no … es demasiado para explicar en una respuesta de SO.

Como alternativa, por supuesto, puede crear o utilizar una unidad de RAM, o incluso simular un sistema de archivos virtual, pero eso es un poco tonto como un bash de evitar la creación de un archivo.

Entonces, la respuesta correcta es escribir el archivo ejecutable en un archivo y luego ejecutarlo. Por ejemplo, algo como esto:

 fd, path = tempfile.mkstemp(suffix='.exe') code = base64.b64decode(encoded_code) os.write(fd, code) os.fchmod(fd, 0o711) os.close(fd) try: result = subprocess.call(path) finally: os.remove(path) 

Esto debería funcionar tanto en Windows como en * nix, pero está completamente sin probar, y probablemente tendrá errores en al menos una plataforma.

Obviamente, si desea ejecutarlo varias veces, no lo remove hasta que haya terminado con él. O simplemente use un directorio persistente apropiado, y escríbalo solo si falta o no está actualizado.