Перейти к содержимому
  • 0
SergOmarov

Передача функций

Вопрос

Есть 2 компьютера,  одного есть в оперативной памяти функция, как ее передать другому?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

А из результата string.dump никак не получить объект?

А толку? Ну получишь ты строку с байт-кодом функции, но она годится только для изучения. Выполнить её не удастся, поскольку в конфиге мода, по умолчанию, отключена загрузка байт-кода. 

 

Её легко включить, но разработчики грозят гипотетическими проблемами с безопасностью. Теоретически, джава-луа машину можно ковырнуть и заставить выполнить любой код на стороне сервера. Но практически, флагом "безопасности", имхо, машут сторонники опенсорса, поскольку возможность запуска байт-кода открывает возможность проприетарщины, ну и много других интересных фишечек.

 

Хотя никто не мешает заняться реверсом и написать декомпилятор из байт-кода обратно в луа ) тоже интересная задача.

Изменено пользователем swg2you

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я вот про это и подумал, то есть ничего еще подобного не делали? А где почитать про спецификацию lua-bytecode?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я вот про это и подумал, то есть ничего еще подобного не делали? А где почитать про спецификацию lua-bytecode?

Спецификация байт-кода - вопрос конкретной реализации.

Гугл выдает кучу тем по декомпиляции, в т.ч. и готовых (работоспособных ли?) утилит.

 

Тривиально, задача сводится к трансляции байт-кода в эквивалентный луа-код, который, в свою очередь, сможет компилироваться с помощью родной load() в исходный байт-код. Думаю смотреть исходники луа машины, в частности функции лоад - самый верный путь. Именно она транслирует луа- в байт-, и именно её необходимо реверснуть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кстати, если разрешить использование байт кода через load, можно будет выполнять C-программы на сервере? А может лучше запретить выполнение только C(подпилить виртуальную машину lua), одни lua-скрипты много шума не наделают(у них ограниченная env.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кстати, если разрешить использование байт кода через load, можно будет выполнять C-программы на сервере? А может лучше запретить выполнение только C(подпилить виртуальную машину lua), одни lua-скрипты много шума не наделают(у них ограниченная env.

А теперь ткни пальцем в строчку конфига, где это показывается. И в любом случае этого не поставят, ибо зачем?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для того же, для чего разрабы это реализовали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А теперь ткни пальцем в строчку конфига, где это показывается. И в любом случае этого не поставят, ибо зачем?

Палец подымается, и медленно ползет по тексту файла OpenComputers.cfg в поисках секции lua{}, найдя её, тыкает в первый параметр:

  lua {

      # Whether to allow loading precompiled bytecode via Lua's `load`
      # function, or related functions (`loadfile`, `dofile`). Enable this
      # only if you absolutely trust all users on your server and all Lua
      # code you run. This can be a MASSIVE SECURITY RISK, since precompiled
      # code can easily be used for exploits, running arbitrary code on the
      # real server! I cannot stress this enough: only enable this is you
      # know what you're doing.
      allowBytecode=false
2 NEO: Слово "precompiled" в первой строке комментария сможешь интерпретировать? ;) Изменено пользователем swg2you

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Палец подымается, и медленно ползет по тексту файла OpenComputers.cfg в поисках секции lua{}, найдя её, тыкает в первый параметр:

  lua {

      # Whether to allow loading precompiled bytecode via Lua's `load`
      # function, or related functions (`loadfile`, `dofile`). Enable this
      # only if you absolutely trust all users on your server and all Lua
      # code you run. This can be a MASSIVE SECURITY RISK, since precompiled
      # code can easily be used for exploits, running arbitrary code on the
      # real server! I cannot stress this enough: only enable this is you
      # know what you're doing.
      allowBytecode=false

 

 

А может лучше запретить выполнение только C(подпилить виртуальную машину lua), одни lua-скрипты много шума не наделают(у них ограниченная env.

Эта опция не особо охотно делает заказанное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Эта опция не особо охотно делает заказанное.

Эта опция запрещает/разрешает загрузку скомпилированного байт-кода через load(), каким боком сюда затесалось слово из буквы С я не в курсе )

 

Вы считаете, что интерпретатор даст доступ байт-коду к функциям С?

Изменено пользователем swg2you

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нет, но через load можно будет загрузить код скомпилированный из C, но тут я подумал: а почему его так боятся? Он вроде должен быть загружен с использование указанной среды или песочницы по умолчанию)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нет, но через load можно будет загрузить код скомпилированный из C, но тут я подумал: а почему его так боятся? Он вроде должен быть загружен с использование указанной среды или песочницы по умолчанию)

Песочница у луа довольно дырявая ) но несмотря на это я не думаю, что можно сильно навредить изнутри такой матрешки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А если написать сервер на сокетах, ты ему байт-код,а он тебе результат?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...