【问题标题】:How to Deobfuscation Lua Script?如何反混淆 Lua 脚本?
【发布时间】:2017-05-25 20:22:57
【问题描述】:
local script= string.dump(
    function()
        print('Hi')
    end
)

buff=""

for v=1,string.len(script) do
    buff=buff..'\\'..string.byte(script,v)
end

print(buff)  

脚本变成字节码,知道如何反转它吗?

【问题讨论】:

    标签: string lua byte obfuscation deobfuscation


    【解决方案1】:

    您无法将字节码反转为 Lua 源,但您可以使用 luac -l 列出 VM 指令。

    【讨论】:

    • LuaDec 每次反编译都会关闭,我对 VM 指令一无所知
    【解决方案2】:

    要找出VM字节码和Lua字节码的区别,在VM字节码前面总是有一个\24

    在这种情况下,这是 VM (virtual machine) 字节码。这个混淆的东西也使用了string.dump函数,可以很容易地反转。

    这是修改后的反编译器版本:

    local script= string.dump(
        function()
    
          print('Hi')
    
        end
    )
    buff=""
    
    for v=1,string.len(script) do
        buff=buff..'\\'..string.byte(script,v)
    end
    buff = "'"..buff.."'"
    print("print("..buff..")")
    

    这个版本只是简单地使用print 函数来打印在脚本中创建的string.dump。源代码清晰可见,我很确定这适用于所有不安全的 VM 混淆器。

    【讨论】:

      猜你喜欢
      • 2020-09-11
      • 2020-07-04
      • 2013-04-04
      • 1970-01-01
      • 2022-01-18
      相关资源
      最近更新 更多