我最近下载了一些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'
不看加密的。 好像它只是一个字节序列。 每个反斜杠代表其字节码的字符。
图27是逃跑,76是 'L',117是 'U',97是 'a' 和等等。
通过简短的脚本运行它给我这个字符串(符号是特殊字符,如逃生,航向和空的开始):←LuaQ☺♦♦@ @C:\用户\亚历克斯\桌面
你可以看一下字节的ASCII表 。
更新:研究有一点告诉我,LuaQ意味着它是一个预编译脚本或类似的东西。 我可能是遥远,但。
棘手的部分是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维基提到的工具页面 。
这里没有你为我提供采取进一步块足够的内容,我认为它的截?
如果它有加载链一个简单的方法可能并不总是工作才刚刚加入
加载链=打印;
在开始时
而不是试图只是交给你一个简单的答案,我想告诉你一些事情,知道如果遇到类似这样的东西,一路上。
这种混淆是不是很安全,实际上是一个ASCII表。 通常情况下,这些种类的迷惑在Lua 5.1制成,并且可以与可以容易地制成:byte
和table.concat
。 你可以简单地扭转这一代码更强大的版本的特洛伊的解释,即可以绕过它周围最安全:
function loadstring(input)
print(input)
end
所以,我希望你能对这个东西是如何工作的一些想法。 如前所述,这可以通过复制:byte
和table.concat
使用。