联系代码反混淆(lua code deobfuscation)

2019-08-22 03:12发布

我最近下载了一些Lua代码和我发现里面是一些模糊的字符串。 这让我不知道什么样的模糊技术的使用存在。 没有任何人有一个想法?

local code='\27\76\117\97\81\0\1\4\4\4\8\0\64\0\0\0\64\67\58\92\85\115\101\114\115\92\65\108\101\120\92\68\101\115\107\116\111\112'
loadstring(code)()

编辑:(?加密的)一些更多的代码。

“\ 196 \ 2 \ 28 \ 66 \ 0 \ 1 \ 198 \ 193 \ 194 \ 2 \ 25 \ 128 \ 129 \ 3 \ 22 \ 64 \ 14 \ 128 \ 197 \ 193 \ 0 \ 0 \ 198 \ 193 \ 195 \ 3 \ 6 \ 2 \ 196 \ 2 \ 220 \ 129 \ 0 \ 1 \ 218'

Answer 1:

不看加密的。 好像它只是一个字节序列。 每个反斜杠代表其字节码的字符。

图27是逃跑,76是 'L',117是 'U',97是 'a' 和等等。

通过简短的脚本运行它给我这个字符串(符号是特殊字符,如逃生,航向和空的开始):←LuaQ☺♦♦@ @C:\用户\亚历克斯\桌面

你可以看一下字节的ASCII表 。

更新:研究有一点告诉我,LuaQ意味着它是一个预编译脚本或类似的东西。 我可能是遥远,但。



Answer 2:

棘手的部分是loadstring和相关功能,可同时接收Lua代码和LUA字节代码。 这一号召loadstring只是传递字节编译LUA而不是LUA的源代码。

你可以很容易地得到字节编译LUA。 你可以得到这样一个例子

  • 创建一个LUA文件。
  • 与luac产生lauc.out编译
  • 看看用十六进制查看器中的文件内容。

对于空LUA文件获取:

0000000: 1b4c 7561 5100 0104 0804 0800 0900 0000  .LuaQ...........
0000010: 0000 0000 4066 6f6f 2e6c 7561 0000 0000  ....@foo.lua....
0000020: 0000 0000 0000 0002 0201 0000 001e 0080  ................
0000030: 0000 0000 0000 0000 0001 0000 0001 0000  ................
0000040: 0000 0000 0000 0000 00                   .........

前8个字节的翻译成十进制是:

27, 76, 117, 97, 81, 0, 1, 4

其中转义字符在您的字符串相匹配。

如果你想在什么组块中的代码没有你需要写块出文件,并使用一个LUA反编译工具,以进一步调查细节。 ChunkSpy , luadec15和unluac都在LUA维基提到的工具页面 。

这里没有你为我提供采取进一步块足够的内容,我认为它的截?



Answer 3:

如果它有加载链一个简单的方法可能并不总是工作才刚刚加入

加载链=打印;

在开始时



Answer 4:

而不是试图只是交给你一个简单的答案,我想告诉你一些事情,知道如果遇到类似这样的东西,一路上。

这种混淆是不是很安全,实际上是一个ASCII表。 通常情况下,这些种类的迷惑在Lua 5.1制成,并且可以与可以容易地制成:bytetable.concat 。 你可以简单地扭转这一代码更强大的版本的特洛伊的解释,即可以绕过它周围最安全:

function loadstring(input)
   print(input)
end

所以,我希望你能对这个东西是如何工作的一些想法。 如前所述,这可以通过复制:bytetable.concat使用。



文章来源: lua code deobfuscation