我正在尝试解密这个混淆的Lua脚本

所以我一直在尝试解密dll,java和Lua文件,但是当我遇到这个时,我被卡住了。

大家有什么想法可以帮我解密吗?

由于脚本太大了,我把它放在pastebin链接中。 https://pastebin.com/UsdWEHnm IlIIl1liIllIi1II1Ii.lIl1llIllIii1111lIIIii = lIli1IlI11lIlI1il11i1() lIli1IlI11lIlI1il11i1() lIli1IlI11lIlI1il11i1() local ll1ili1i1Ii1II111li = lIlIlll1Ill1illiliIiI() for i1IiIili111iI1lil1l = lIliI1iii11lilII1IIil, ll1ili1i1Ii1II111li do IlIIl1liIllIi1II1Ii.l111II111Il1IiIII11i[i1IiIili111iI1lil1l] = lIlIlll1Ill1illiliIiI() end lIlIlll1Ill1illiliIiI() lIli1IlI11lIlI1il11i1() lIli1IlI11lIlI1il11i1() lIlIlll1Ill1illiliIiI() lIlIlll1Ill1illiliIiI() lIlIlll1Ill1illiliIiI() lIli1IlI11lIlI1il11i1() local ll1ili1i1Ii1II111li = lIlIlll1Ill1illiliIiI() - (#{ 91625, 31274, 132907, 128929, 89879, 28353, 85846, 63662, 120975, 94604, 40073, 120271, 29175, 126728, 55753, 31423, 118592, 112751, 123563, 26653 } + 49 - 22 - 12 + 24 + 10 + 32 - 27 + 22 - 35 + 41 + 25 + 29 + 18 + 33 + 32 + 133485) for i1IiIili111iI1lil1l = lIliI1iii11lilII1IIil, ll1ili1i1Ii1II111li do local l1iI1Illil1i1il1iII = {} local lIlill1IIIlli1iII1ill = lIlIllI1i111lilIi1ilI(i1iIIIii1liiIillilI) l1iI1Illil1i1il1iII.il1li1iilIii1iIll11l = iiIlIlilIlIll1l1l1l(lIlill1IIIlli1iII1ill, #{ 19814, 81950, 109054, 18321, 117777, 126276, 941, 40833, 27393, 25354, 106568, 58140, 73781, 28751, 110509, 42721, 118305, 94680, 18166, 4591 } + 26 - 9 + 9 - 4 - 48 - 2 + 24 + 47 - 35 - 8 - 31 - 1 + 39, #{ 34453, 33661, 37020, 5461, 3935, 7245, 90253, 30010, 122438, 78286, 50375, 62446, 101176, 126539, 91679, 59085, 67167, 93133, 73148, 54067, 13807 } + 29 - 46 - 15 + 41 + 32 - 26 + 6 - 6 + 27 - 43 + 12 - 17 + 11 + 6) l1iI1Illil1i1il1iII.lIlilIilillll11iil1li1 = iiIlIlilIlIll1l1l1l(lIlill1IIIlli1iII1ill, #{ 59738, 38876, 31250, 75801, 96293, 27832, 11774, 9098, 31230, 80836, 129303, 101680, 12689, 60836 } - 3 + 38 + 32 - 43 + 21 - 10 + 5 - 32 + 14 - 8 + 7 - 15 - 19, #{ 37073, 70137, 113242, 21765, 129309, 86407, 33113, 85980, 105005, 59356, 53236, 100694, 61483, 55175, 85902, 33351, 70969, 133357, 55705, 74121, 116292, 132529 } - 13 - 4 - 47 - 36 - 29 + 17 - 49 + 43 - 48 - 42 - 4 - 18 + 16 + 201) l1iI1Illil1i1il1iII.I1i1IiiIlIIl1II11IiI = iiIlIlilIlIll1l1l1l(lIlill1IIIlli1iII1ill, #{ 129902, 68496, 976, 73113, 19012, 12350, 23326, 93845, 88636, 103236, 52249, 70226, 40074,

这是一个非常非常非常小的示例,总共有40,000个字符。

点赞
用户10041320
用户10041320

我知道这个旧帖子,但也许我可以帮助您了解一些您不知道的信息。这个脚本是用 Lua 编写的,是由当前 Luraph 的旧版本创建的。它在一个名为 V3rmillion 的多用途网站上出售,并在黑市上作为一项服务出售。尽管“混淆”代码是付费的,因为每个要混淆的脚本都需要支付 1 美元 PayPal,我想他们的混淆技术肯定物有所值。提供的 pastebin 中没有包含水印,但我知道它是 Luraph,因为有这个附加信息:http://prntscr.com/k37hin 这是一种很棒的自定义字节码示例,但反过来只是使用 Lua 虚拟机来理解它的 Lua 字节码。这也与 Lua 字节码有关;使用解释器理解字节码的含义,导出可执行代码。因此,实际上 Luraph 使用了一个自制解释器和自制字节码,并使用解释器来理解字节码,然后将其转换为可执行代码。

2018-07-06 08:29:25
用户5373986
用户5373986

有几种不同的方法可以帮助消除代码中的混淆。

1. 使用正确的变量和函数名称

其中一种方法是使用更有区别性的变量和函数名称替换所有不同的变量和函数名称,而不是使用 "I1lili1" 等名称。这将使您更容易跟踪代码,也可以防止您将任何变量混淆在一起。

2. 对代码进行缩进

另一种方法是查找 'if','while','function' 和 'end' 关键字,然后开始对代码进行缩进,以使其更易读,更易于跟踪。

3. 解决基本的数学问题

上述代码经常使用长度函数 (#),因为它将大多数列表用作表示普通数值的另一种方式,并防止人们轻松地看到实际数值。例如:

#{ 10, 372, 67298, 2287, 694, 1, 5039 }

当您执行长度函数时,它将变为:

7

如果您将所有这些列表更改为实际数字,然后解决简单的加减方程,您就可以消除几乎所有的数字。

当然,这样做需要很多时间,但这正是代码混淆的目的。如果您不想花费几个小时浏览所有代码来消除混淆,可以使用我先前准备的版本:https://pastebin.com/Amtt8UMP。我使用了上述所有方法来消除代码中的一些混淆,但您仍需要跟踪程序以找到所有函数的输出。

然而,正如 Egor Skriptunoff 所评论的那样,这段代码最可能只是激活一个 loadstring。该代码也可能被混淆,因此实际上这段代码对您没有用。

希望这有所帮助!

2018-07-06 12:57:51
用户6737365
用户6737365

Luraph 是一个 LBI。

这是 LBI:https://github.com/JustAPerson/lbi/blob/master/src/lbi.lua

它使用自定义的字节码,你可以轻松地从 LBI 和 Luraph VM 的脚本中找到模式。只需替换这些模式,你就可以得到一个可读的虚拟机。

但反混淆字节码是完全不同的问题。

2018-08-26 08:32:29