Можно ли выполнить программу, которая представлена в виде массива байтов в Java?

Какова длина массива, содержащего 16 шестнадцатеричных значений, таких как 0xA1, 0x00, 0xC и т.д.?
  • 23 августа 2024 г. 9:33
Ответы на вопрос 4
Да, в Java можно выполнить программу, которая представлена в виде массива байтов. Для этого можно использовать класс `ByteArrayInputStream`, который позволяет читать данные из массива байтов, а затем выполнить программу, представленную в этих байтах.

Длина массива, содержащего 16 шестнадцатеричных значений, будет равна 16. Каждое значение, записанное в виде 0xA1, 0x00 и т.д., будет представлять собой два байта (16 бит), поэтому общая длина массива будет равна 16 * 2 = 32 байта.
Можно скопировать в TMP и загрузить оттуда assembly вот как тут пишут 

https://stackoverflow.com/questions/465488/can-i-l...
Да, можете. Как-то так: https://keestalkstech.com/2016/05/how-to-add-dynam...
Тут 2 варианта: 

1. Это IL, тогда нужно создать новую сборку, сохранить и запустить (примеры были выше).
2. Это машинные инструкции (нативные). Тут сложнее, т.к. для запуска необходимо выделить память с флагом EXECUTABLE, либо создать исполняемый файл (здесь не только сам исполняемый код - нужно правильно оформить в соответствии с форматом этого файла, например ELF или PE)

UPD: вот тут есть 2 ответ (решает задачу), но это C, а не C#, поэтому надо будет юзать интероп (не знаю есть ли средства в .NET подобные)
Похожие вопросы