所以我一直试图弄清楚如何反编译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个字符。
答案 0 :(得分:2)
我知道这是一个很老的话题,但是也许我可以为您提供一些您可能不知道的信息。该脚本由当前Luraph的旧版本创建。在名为V3rmillion的多功能网站上出售,并作为服务在黑市上出售。尽管已支付了“混淆”代码的费用,但由于每个要混淆的脚本的费用为1美元,所以我认为它们的混淆是相当值得的。提供的pastebin不包含水印,但由于以下提示,我知道它是Luraph:http://prntscr.com/k37hin这是自定义字节码的一个很好的示例,听起来可能很棒,但作为回报,只是使用lua的Lua字节码虚拟机了解其含义。这也与Lua字节码有关;使用解释器来了解字节码的含义并生成可执行代码。因此,实际上,Luraph使用定制的解释器和定制的字节码,并使用解释器理解字节码,然后将其转换为可执行代码。
答案 1 :(得分:1)
您可以做一些不同的事情来帮助消除代码中的混淆。
一种方法是查找所有不同的变量和函数名称并将其替换为比“ I1lili1”更具特色的名称,依此类推。这样可以使您更轻松地遵循代码,并且还可以防止相互混淆任何变量。
另一种方法是寻找'if','while','function'和'end'关键字,然后开始缩进代码以使其更具可读性,并且更易于遵循。
上面的代码经常使用长度函数(#),因为它使用大多数列表作为表示正常数字并防止人们容易看到实际数字的另一种方式。例如:
#{ 10, 372, 67298, 2287, 694, 1, 5039 }
将变为:
7
执行长度功能时。如果将所有这些列表都更改为实际数字,然后在可以消除几乎所有数字之后求解简单的加减法方程。
当然要花很多时间,但这毕竟是混淆代码的关键。如果您不想花几个小时来处理所有代码以消除混淆,您可以使用我之前准备的该版本:https://pastebin.com/ZVczDMbM我已经使用了上述所有方法来摆脱某些方法。代码中的混淆,但是您仍然需要在程序中进行跟踪以查找所有功能的输出。
但是,正如Egor Skriptunoff所评论的那样,这段代码最有可能要做的就是激活一个加载字符串。来自负载字符串的这段代码也可能会被混淆,因此实际上这段代码对您没有用。
希望这会有所帮助!
答案 2 :(得分:0)
Luraph是一个LBI。 这是lbi:https://github.com/JustAPerson/lbi/blob/master/src/lbi.lua
它使用自定义字节码,您可以从lbi和luraph vm中轻松找到脚本中的模式。只需替换它们,您将获得一个可读的vm。 对字节码进行模糊处理是完全不同的事情。