Выполнить строку байтов в Python из файла .exe

Учитывая двоичный файл, такой как «Installer.exe», как я могу прочитать байты этого файла, а затем выполнить эти байты?

то есть

      with open('Installer.exe', 'rb') as file:
    data = file.read()
some_function_to_execute_bytes(data)

Я знаю, что можно выполнить файл, используя подпроцесс, например

      import subprocess

subprocess.run('Installer.exe')

но я хотел бы запустить строку байтов независимо от того, как она получена (очень похоже на вопрос « Возможно ли выполнить байт-код Python из сценария? », но двоичный файл не является кодом Python).

В моем случае у меня есть файл .exe, сгенерированный pyinstaller в объекте MemoryFS из pyfilesystem. Примечательно, что файл в MemoryFSобъект нельзя запускать на системном уровне — просто потому, что он не существует в файловой системе; он полностью хранится в памяти.

Я хотел бы иметь возможность читать двоичный файл в памяти и выполнять его. Запись в файл в локальной файловой системе неприемлема — увеличивается время на выполнение операции записи, занимает дополнительное место в файловой системе, требуется дополнительная очистка и т. д.

      from fs.memoryfs import MemoryFS
from fs.osfs import OSFS
from fs.copy import copy_file

external_path = 'some/external/location/that/should/not/run/binary/files/Installer.exe'
external_fs = OSFS('//external/server')
in_memory_fs = MemoryFS()
copy_file(external_fs, external_path, in_memory_fs, 'Installer.exe')

data = in_memory_fs.readbytes('Installer.exe')
some_function_to_execute_bytes(data)

0 ответов

Другие вопросы по тегам