Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决

测试时出现问题的代码 local v3=load(string.dump(function(...) if not ... then return print('数据丢失') end print(...,'v3运行成功') return 0 end)) v3('神仙')

原始代码能正常执行 虚拟机加密后会 报attempt to perform arithmetic on a table value (upvalue 'b')

我问了下AI是这么说的
问题分析: 虚拟化器会递归处理所有嵌套函数,包括 string.dump 参数中的函数字面量 内层函数被虚拟化后,变成了依赖 VM 上下文(指令表 O、常量表 b、闭包构造器 C 等)的闭包 string.dump 只能序列化字节码,无法保存这些 upvalues load 加载后的闭包失去了 VM 上下文,导致运行时错误 问题本质: 这是 Lua 语言特性(string.dump 不保存 upvalues)与虚拟化技术(生成的闭包依赖 VM 上下文作为 upvalues)的固有冲突。

这个要咋解决AI也解决不了直接让我避免这样写。 我听别人说是我的虚拟机架构问题?

点赞