Есть декомпрессионных Librarys в чистом Lua, вы должны иметь возможность вставлять их в любой среде, которая позволяет загружать Lua скрипты: http://lua-users.org/wiki/CompressionAndArchiving
Если вы не можете получить доступ к любому файлы на всех, вы могли бы попробовать простой упаковщик:
#!/usr/bin/env lua
local files = arg
local w = io.write
local function pack(...) return {...} end
w("files = {\n")
for i, filename in ipairs(arg) do
w('\t["' ..filename .. '"] = "')
local file = assert(io.open(filename, "r"), "Can't open file!")
local data = file:read("*a")
data = data:gsub("\a", "\\a")
:gsub("\\", "\\\\")
:gsub("\f", "\\f")
:gsub("\n", "\\n")
:gsub("\r", "\\r")
:gsub("\t", "\\t")
:gsub("\v", "\\v")
:gsub('"', '\\"')
:gsub("'", "\\'")
w(data, '",\n')
end
w("}\n")
w([[
function require(path)
local data = assert(files[path..".lua"], "file not found")
local func = assert(loadstring(data))
local _, ret = assert(pcall(func))
return ret
end
]])
w('require("', arg[1]:match("^(.-)%.lua$"),'")\n')
Это должно создать сценарий, как это:
$ ./packer.lua init.lua
files = {
["init.lua"] = "for k,v in pairs(arg) do\n\tprint(k,v)\nend\n",
}
function require(path)
local data = assert(files[path..".lua"], "file not found")
local func = assert(loadstring(data))
local _, ret = assert(pcall(func))
return ret
end
require("init")
Если ваш .exe использует Lua как DLL, вы, вероятно, можете заменить DLL полнофункциональной Lua DLL. – lhf
Это было то, о чем я думал, но он не использует lua dll, каковы другие варианты? он встроен в .exe или в любую другую DLL? если это все еще выполнимо? – user572420
Это взломанный способ, но вы можете попытаться использовать программу (в частности, с помощью DLL-инъекции с C++) – devRicher