SergOmarov 34 Опубликовано: 30 июля, 2015 Есть 2 компьютера, одного есть в оперативной памяти функция, как ее передать другому? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
swg2you 403 Опубликовано: 4 августа, 2015 (изменено) А из результата string.dump никак не получить объект? А толку? Ну получишь ты строку с байт-кодом функции, но она годится только для изучения. Выполнить её не удастся, поскольку в конфиге мода, по умолчанию, отключена загрузка байт-кода. Её легко включить, но разработчики грозят гипотетическими проблемами с безопасностью. Теоретически, джава-луа машину можно ковырнуть и заставить выполнить любой код на стороне сервера. Но практически, флагом "безопасности", имхо, машут сторонники опенсорса, поскольку возможность запуска байт-кода открывает возможность проприетарщины, ну и много других интересных фишечек. Хотя никто не мешает заняться реверсом и написать декомпилятор из байт-кода обратно в луа ) тоже интересная задача. Изменено 4 августа, 2015 пользователем swg2you Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov Автор вопроса 34 Опубликовано: 4 августа, 2015 Я вот про это и подумал, то есть ничего еще подобного не делали? А где почитать про спецификацию lua-bytecode? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
swg2you 403 Опубликовано: 4 августа, 2015 Я вот про это и подумал, то есть ничего еще подобного не делали? А где почитать про спецификацию lua-bytecode? Спецификация байт-кода - вопрос конкретной реализации. Гугл выдает кучу тем по декомпиляции, в т.ч. и готовых (работоспособных ли?) утилит. Тривиально, задача сводится к трансляции байт-кода в эквивалентный луа-код, который, в свою очередь, сможет компилироваться с помощью родной load() в исходный байт-код. Думаю смотреть исходники луа машины, в частности функции лоад - самый верный путь. Именно она транслирует луа- в байт-, и именно её необходимо реверснуть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov Автор вопроса 34 Опубликовано: 4 августа, 2015 Кстати, если разрешить использование байт кода через load, можно будет выполнять C-программы на сервере? А может лучше запретить выполнение только C(подпилить виртуальную машину lua), одни lua-скрипты много шума не наделают(у них ограниченная env. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 411 Опубликовано: 4 августа, 2015 Кстати, если разрешить использование байт кода через load, можно будет выполнять C-программы на сервере? А может лучше запретить выполнение только C(подпилить виртуальную машину lua), одни lua-скрипты много шума не наделают(у них ограниченная env. А теперь ткни пальцем в строчку конфига, где это показывается. И в любом случае этого не поставят, ибо зачем? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov Автор вопроса 34 Опубликовано: 4 августа, 2015 Для того же, для чего разрабы это реализовали. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
swg2you 403 Опубликовано: 4 августа, 2015 (изменено) А теперь ткни пальцем в строчку конфига, где это показывается. И в любом случае этого не поставят, ибо зачем?Палец подымается, и медленно ползет по тексту файла 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" в первой строке комментария сможешь интерпретировать? Изменено 4 августа, 2015 пользователем swg2you Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 411 Опубликовано: 4 августа, 2015 Палец подымается, и медленно ползет по тексту файла 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. Эта опция не особо охотно делает заказанное. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
swg2you 403 Опубликовано: 4 августа, 2015 (изменено) Эта опция не особо охотно делает заказанное.Эта опция запрещает/разрешает загрузку скомпилированного байт-кода через load(), каким боком сюда затесалось слово из буквы С я не в курсе ) Вы считаете, что интерпретатор даст доступ байт-коду к функциям С? Изменено 4 августа, 2015 пользователем swg2you Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov Автор вопроса 34 Опубликовано: 5 августа, 2015 Нет, но через load можно будет загрузить код скомпилированный из C, но тут я подумал: а почему его так боятся? Он вроде должен быть загружен с использование указанной среды или песочницы по умолчанию) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
swg2you 403 Опубликовано: 5 августа, 2015 Нет, но через load можно будет загрузить код скомпилированный из C, но тут я подумал: а почему его так боятся? Он вроде должен быть загружен с использование указанной среды или песочницы по умолчанию) Песочница у луа довольно дырявая ) но несмотря на это я не думаю, что можно сильно навредить изнутри такой матрешки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 5 августа, 2015 А если написать сервер на сокетах, ты ему байт-код,а он тебе результат? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov Автор вопроса 34 Опубликовано: 11 августа, 2015 Тоже можно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Есть 2 компьютера, одного есть в оперативной памяти функция, как ее передать другому?
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах