string.dump не верно работает

Страницы: 1
RSS
string.dump не верно работает
 
-- пишем такой код
function main()
local f = io.open(getScriptPath() .. '\\1.luac', 'w+')
f:write(string.dump(main,true))
f:close()
end

main()

в результате получается файл 1.luac и он не запускается в quike (пишет corrupted precompiled chunk)
смотрю кишки файла а там не хватает куска.
[img]data:image/png;base64,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[/img]

согласно документации после версии LUA должно быть ещё 6 байт

проверил на 8 квике и 9 , всё равно ошибка.
 
жесть какой кривой форум, вставил картинку было всё хорошо, опубликовал, а тут хрень вылезла, ещё и не отредактируешь.
 
[img]file:///D:/2022-01-03_14-33-05.png[/img]
[img]file:///D:/2022-01-03_14-31-04.png[/img]
на синей картинке , кишки полученного файла
на другой описание внутреннего формата файла
 
Цитата
Алексей написал:
смотрю кишки файла а там не хватает куска.
Выглядит так, будто были предприняты все усилия, чтобы не заработало.
1) откройте файл с 'wb', а не 'w+'
2) добавьте f:flush() перед f:close()
3) не надо main явно вызывать в конце.
 
Цитата
Anton написал:
Цитата
Алексей написал:
смотрю кишки файла а там не хватает куска.
Выглядит так, будто были предприняты все усилия, чтобы не заработало.
1) откройте файл с 'wb', а не 'w+'
2) добавьте f:flush() перед f:close()
3) не надо main явно вызывать в конце.
1 абсолютно без разницы какая опция там, результат один и тот же
2 делал, не имеет значения, файл создаётся нормально.
3 это сделано чтобы чисто в lua запускать , без квика
и нормально работает если в чистом lua запускать
 
Как уже правильно сказали выше, файл должен быть в бинарном представлении открыт.

Вот отрывок из книги создателя языка:

Lua принимает предкомпилированный код практически везде, где он допускает исходный код. В частности, loadfile и load принимают предкомпилированный код.

Мы можем написать упрощенную версию luac непосредственно на Lua:


Код
p = loadfile(arg[1]) 
f = io.open(arg[2], "wb") 
f:write(string.dump(p)) 
f:close() 


Основная функция здесь — это string.dump: она получает функцию Lua и возвращает ее предкомпилированный код как строку, правильно оформленную для ее обратной загрузки в Lua.


Т.к. в Квике теперь две версии lua, то необходимо запускать все в одной версии.
 
Алексей,  еще раз по буквам весь скрипт (и ничего более)
Код
function main()
   local f = io.open(getScriptPath() .. '\\1.luac', 'wb')
   f:write(string.dump(main,true))
   f:flush()
   f:close()
end

Nikolay,  он два раза пишет в файл, один раз явным вызовом, другой - когда квик запускает мейн во втором потоке. Что там за каша получится никто не знает.
 
переделал исходник, сохраняю совершенно другую функцию, результат отрицательный, не запускается в квике.
этот кусочек из файла  1B 4C 75 61 53 00 19 93 0D 0D 0A 1A 0D 0A 04 08 04 08 08 78 56 00 00 00 00 00 00 00 00 00 00 00
в документации написано
Byte numbers are in origin-1 decimal (mostly showing the arithmetic) and origin-0 hex.
 1 x00: 1b 4c 75 61   LUA_SIGNATURE from lua.h.
 5 x04: 52  00  Binary-coded decimal 52 for the Lua version, 00 to say the bytecode is compatible with the "official" PUC-Rio implementation.
 5+2 x06: 01  04  04  04  08  00 Six system parameters. On x386 machines they mean: little-endian,
                4-byte integers,
                4-byte VM instructions,
                4-byte size_t numbers,
                8-byte Lua numbers, floating-point.
                These parameters must all match up between the bytecode file and the  Lua interpreter, otherwise the bytecode is invalid.
   7+6 x0c: 19 93 0d 0a 1a 0a   Present in all bytecode produced by Lua 5.2 from PUC-Rio.
                   Described in lundump.h as "data to catch conversion errors".
                  Might be constructed from binary-coded decimal 1993 (the year it all started),
                  Windows line terminator, MS-DOS text file terminator, Unix line terminator.
Получается первые зеленые правильно идут, а между зелеными и красными должны быть байты размерности и их нет.  
И красные немного не те.
 
в тоже время сделал ещё эксперимент, очень простая функция без внешних переменных

function test()
message('Test',1)
end

function main()
local f = io.open(getScriptPath() .. '\\test.luac', 'wb')
f:write(string.dump(test,true))
f:flush()
f:close()
end

создался файл test.luac и он работает
у меня взрыв мозга
1B 4C 75 61 53 00 19 93 0D 0A 1A 0A 04 08 04 08 08 78 56 00 00 00 00 00 00 00 00 00 00 00 28 77
только красная часть отличается  
 
Вопрос из спортивного интереса: а на кой вообще нужны эти .luac? Я всегда запускаю файл .lua, он всегда компилируется при запуске и прекрасно работает. Время на компиляцию стремится к нулю...
 
Цитата
Алексей написал:
взрыв мозга
Как минимум, заменены '1A 0A' на '1A 0D 0A' (или \n на \r\n, если не очевидно) и выброшены управляющие символы (01  04  04  04  08  00), что рантайм и должен делать, если файл открыт не в бинарном режиме. И еще какие-то замены должны быть и, хуже того, зависящие от текущей локали.

Цитата
Владимир написал:
а на кой вообще нужны эти .luac?
Некоторые на продажу делают, типа сорцы попрятать (до поры или совсем). Правда, конкретно эти luac на раз ломаются.
 
Цитата
Anton написал:
Цитата
Алексей написал:
взрыв мозга
Как минимум, заменены '1A  0A ' на '1A  0D 0A ' (или \n на \r\n, если не очевидно) и выброшены управляющие символы (01  04  04  04  08  00), что рантайм и должен делать, если файл открыт не в бинарном режиме. И еще какие-то замены должны быть и, хуже того, зависящие от текущей локали.

Цитата
Владимир написал:
а на кой вообще нужны эти .luac?
Некоторые на продажу делают, типа сорцы попрятать (до поры или совсем). Правда, конкретно эти luac на раз ломаются.
в бинарном открывал,
через dll вроде нормально можно защитить.
 
Anton, В интерпретируемом коде сорцы попрятать?! Воистину, программисты вымерли! Ах, да - ОТ СТЫДА попрятать! :smile:  
 
Цитата
Владимир написал:
Anton, В интерпретируемом коде сорцы попрятать?! Воистину, программисты вымерли! Ах, да - ОТ СТЫДА попрятать! ::  
я думал что тут не тролей, а нет, есть!
Чтобы дельного посоветовал, а стебатся мы все гаразд.
 
Алексей, Я дельное и посоветовал: используйте файлы .lua и не занимайтесь хернёй.
 
Цитата
Алексей написал:
в бинарном открывал
Мы же видим, что результат привнесен текстовым режимом. Как так получилось, надо смотреть.

Цитата
Алексей написал:
через dll вроде нормально можно защитить
Тут надо сначала выяснить, от чего защищаемся. Алгоритм восстанавливать что по луа-дизасму, что по просто дизасму - примерно одно и то же, если восстанавливающий в теме. Другое дело, что это времязатратно, большинство поделий просто переписать с нуля дешевле, чем нанять спеца их курочить. Если задачу реально ставить - а именно: "сложность восстановления алгоритма достаточно высока" - то можно нормально защитить. А если "вообще чтобы никто никогда не сломал", то это нерешаемая задача.

Цитата
Владимир написал:
ОТ СТЫДА попрятать!
От разного. Вот был случай например, попросили в проекте подсобить, тксть за ящик коньяку. Ну ок, подсобил. А потом один из штатных прогеров статью на хабре накропал, как надо задачку решать (которую я им и порешал) с кусками моего кода, вымарав копирайты. Неприятно же ж.
 
Anton, Да я давал на Хабре даже исходники своего "сортира" - те, кто получали, умолкали, кто нет - визжали что-то непотребное, да тыкали в третий том Кнута. :smile: Программисты ВЫМЕРЛИ!
 
Цитата
Anton написал:
Цитата
Алексей написал:
в бинарном открывал
Мы же видим, что результат привнесен текстовым режимом. Как так получилось, надо смотреть.,


Цитата
Алексей написал:
через dll вроде нормально можно защитить
Тут надо сначала выяснить, от чего защищаемся. Алгоритм восстанавливать что по луа-дизасму, что по просто дизасму - примерно одно и то же, если восстанавливающий в теме. Другое дело, что это времязатратно, большинство поделий просто переписать с нуля дешевле, чем нанять спеца их курочить. Если задачу реально ставить - а именно: "сложность восстановления алгоритма достаточно высока" - то можно нормально защитить. А если "вообще чтобы никто никогда не сломал", то это нерешаемая задача.

Цитата
Владимир написал:
ОТ СТЫДА попрятать!
От разного. Вот был случай например, попросили в проекте подсобить, тксть за ящик коньяку. Ну ок, подсобил. А потом один из штатных прогеров статью на хабре накропал, как надо задачку решать (которую я им и порешал) с кусками моего кода, вымарав копирайты. Неприятно же ж.
я бы скрин сделал и показал что всё в бинарном виде я делал, но тут на форуме беда с картинками.
не собираюсь я ничего прятать, и не буду свои творения продавать или раздавать, мне просто надо получить кусок бинарного кода, есть идея , пробую реализовать, а тут такая засада.
 
Ну так

Код
local f = assert(load([[print('hello')print('world')]]))
 
Цитата
Nikolay написал:
Ну так

Код
   local  f  =  assert(load([[ print ( 'hello' ) print ( 'world' )]]))  
Спасибо
Страницы: 1
Читают тему
Наверх