IllegalState exception
,当我尝试使用-l选项在luac中运行字节码文件(由上述代码行创建)时,我得到: > 因此
string.dump
和luac之间显然存在区别,即使在此处建议这样做:http://lua-users.org/wiki/LuaCompilerInLua可以将string.dump
用作luac的仿真器。谁能向我解释差异,并建议我如何解决
string.dump
“已编译”脚本的问题?#1 楼
loadfile
和luac
发出的字节码之间几乎没有区别。出现错误的唯一可能原因是您以文本模式打开文件stringdumped.txt。尝试以下代码,看看是否存在任何错误
f = io.open("stringdumped.txt", "wb") --Note that file is opened in binary mode
f:write(string.dump(loadfile("sample.lua")))
f:close()
由于没有区别,输出文件stringdumped.txt都可以由lua解释器运行由于不安而反编译。反转步骤也与您使用任何其他已编译的lua脚本完全相似。
评论
啊哈,但是如何反汇编string.dump的输出呢?包装loadstring或loadfile只会给出加载文件名或字节字符串的指令。
– Dennefyren
2014年7月12日11:12
@Dennefyren忘记上一个答案,请参阅更新的答案。
– 0xec
2014年7月12日在18:22
哦,我真是个白痴!没意识到我需要二进制模式。谢谢!
– Dennefyren
14年7月13日在23:56