请问这种LUA加密是怎么做到的,图一是经过base64加密后的函数体,通过get解密函数体,然后使用load执行该lua函数体。图二是我解密base64后的函数体,可以看到他的函数体是通过luac加密的。我自己尝试过先使用luac加密函数体,然后通过base64二次加密,但是发现参数无法正常传入。为什么?
图一(使用base64二次加密):

图二(使用luac首次加密):

请问这种LUA加密是怎么做到的,图一是经过base64加密后的函数体,通过get解密函数体,然后使用load执行该lua函数体。图二是我解密base64后的函数体,可以看到他的函数体是通过luac加密的。我自己尝试过先使用luac加密函数体,然后通过base64二次加密,但是发现参数无法正常传入。为什么?
图一(使用base64二次加密):

图二(使用luac首次加密):

关注让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供。
如果还有疑问可以点击头像关注私信或评论。如果答案让您满意,请采纳、点赞、关注,非常感谢!
根据您描述的情况,这是一个涉及Lua代码多层加密(luac编译+base64编码)的问题。我将分析您遇到的问题并提供解决方案。
您遇到的主要问题是:使用luac编译后的函数体再经过base64编码后,参数无法正常传入。这通常是由于以下几个原因造成的:
以下是实现这种加密方式的正确流程:
-- 1. 原始函数
local function myFunc(self, id)
print("Received id:", id)
-- 函数逻辑
end
-- 2. 编译为字节码
local luac_code = string.dump(myFunc)
-- 3. Base64编码
local base64_code = base64_encode(luac_code) -- 需要实现或使用base64库
-- 1. 获取base64编码的字节码
local encrypted_code = "..." -- 您的base64编码字符串
-- 2. Base64解码
local luac_code = base64_decode(encrypted_code)
-- 3. 加载字节码
local loaded_func = loadstring(luac_code)
-- 4. 执行函数并传递参数
loaded_func()(self, id) -- 注意这里的双重调用
您遇到的参数无法传入的问题,很可能是因为:
string.dump生成的字节码会包裹原始函数,需要额外调用层loadstring返回的是生成原始函数的函数,需要先执行它获取原始函数-- 加密端
local function original_func(self, id)
print("参数1:", self)
print("参数2:", id)
end
local bytecode = string.dump(original_func)
local base64_code = base64_encode(bytecode) -- 假设有base64编码函数
-- 解密端
local decoded_bytecode = base64_decode(base64_code)
local loader = loadstring(decoded_bytecode)
local recovered_func = loader() -- 这里获取原始函数
-- 调用方式
recovered_func("self对象", "参数id")
如果您需要更安全的加密方案,建议考虑使用真正的加密算法(如AES)对字节码进行加密,而不仅仅是base64编码。
希望这个解答能帮助您解决问题!如果仍有疑问,可以提供更具体的错误信息以便进一步分析。