我需要任何可以解码"Luraph Obfuscator"的人. [英] I need anyone that can, decode "Luraph Obfuscator"

查看:1059
本文介绍了我需要任何可以解码"Luraph Obfuscator"的人.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我付了一个不受信任的脚本开发人员.而且我以为他骗了我.他确实向我发送了代码,但他使脚本模糊了.这是一款使用Lua的名为"Roblox"的游戏,代码如下.据我所知,通过运行它可能会起作用.但是我需要更改脚本才能正常工作.有人知道解码迷惑吗?

I paid an untrusted developer for a script. And as I thought he scammed me. He did send me code, but he obfuscated the script. It is for a game called "Roblox" that uses Lua, the code will be down below. As from I can tell by running it, it might work. But I would need to change the script for it to work. Does anyone know to to decode the obfuscation?

https://pastebin.com/B8SZmZGE

local ilIillllII1i1lliliI = assert local II1ll1iliIIIIillIli = select local lIlillIlIi11I1lIIi11I = tonumber local i1li1IIIII1IIilIil1 = unpack local iIl1IIlI11i1il1ilII = pcall local lIlI1IiiIlIl1i11ll1Il = setfenv local iIIlilIlllIliiIili1 = setmetatable local ii1Iiill11ii1IIIill = type local lIll1I1ll1lliilII1Il1 = getfenv local IiIi1llliiIIllllI1i = tostring local Ii1IIill1ilI1lilIiI = error local iilli1lIi11lllIli1l = string.sub local lIlI1li1ll1lliliIlI = string.byte local lIli1Ill1liIlilIIIiiI = string.char local I1ii1iIIl1lI1Iii1iI = string.rep local iiiIiI11IIllIiliI1I = string.gsub local illlIIIllliill1l1ll = string.match local iIi1l1liili1I11l1II = 1 local function lIll1iillI1ll1iiIiIll(IIiiiIiiIllIl1i1i1I, iIililIlliIII11illi) local i1iiI1I1iII1iiIiil1 IIiiiIiiIllIl1i1i1I = iiiIiI11IIllIiliI1I(iilli1lIi11lllIli1l(IIiiiIiiIllIl1i1i1I, 5), "..", function(llii1Ii11lI1llilill) if lIlI1li1ll1lliliIlI(llii1Ii11lI1llilill, 2) == 71 then i1iiI1I1iII1iiIiil1 = lIlillIlIi11I1lIIi11I(iilli1lIi11lllIli1l(llii1Ii11lI1llilill, 1, 1)) return

推荐答案

好吧,我很困惑,我发现人们一直在偷我的答案,并将其发布在v3rmillion上.因此,我将发布另一个答案,但这一次是关于如何实际获取其内容的更好的答案.因此,基本上,如果您没有阅读我的其他答案,请不要阅读,只是阅读以下内容:

Ok so I am turtsis and I see that people have been stealing my answer and posting it on v3rmillion as there own. So I will post another answer but this time a better one on how to actually get contents of it. So basically if you didn’t read my other answer then don’t and just read this one:

Luraph是一个自定义的lbi,它是lua字节码解释器.如果执行string.dump(function),则将得到luaQ作为输出.这就是为什么人们使用unluaC或luadec来获取这些转储的来源.这被称为字节码,它不同于string:byte(),因为它是lua 5.1及更高版本中的一种不可读的lua格式.为了能够使用这些编码的字符串/函数,您将需要一个lbi. lbi所做的是解释位并反序列化它们.这是常用的lbi https://github.com /JustAPerson/lbi/blob/master/src/lbi.lua

Luraph is a custom lbi which is a lua bytecode interpreter. If you do string.dump(function) you will get luaQ as the output. That is why people use unluaC or luadec to get the source to these dumps. This is called bytecode which is different then string:byte() as it is a non readable lua format in lua 5.1 and up. To be able to use these encoded strings/functions you will need a lbi. What a lbi does is it interpreted the bits and deserialzes them. Here is a example of a commonly used lbi https://github.com/JustAPerson/lbi/blob/master/src/lbi.lua

好吧,现在到获取内容的部分.

Ok so now to the part where you get contents of it.

在lua(和其他编码语言)中,有一些称为操作码的东西.操作码控制lua的基础,其中有很多.这些是一些最常见和最有用的:

In lua (and other coding languages) there is things called opcodes. Opcodes control the base of lua and there is quite a few of them. Some of the most commonly known and most useful ones are these:

LOADK-将常量加载到寄存器 LOADBOOL-将布尔值加载到寄存器 LOADNIL-将nil加载到寄存器 JMP-跳 添加-向寄存器添加新内容 SUB-从寄存器中减去某些内容

LOADK - loads a constant to the register LOADBOOL - loads a bool to the register LOADNIL - loads a nil to the register JMP - jump ADD - Adds a new thing to the register SUB - Subtracts something from the register

还有更多,但这些是我们要重点关注的主要内容.

There is many more but those are the main ones we will be focusing on.

好吧,要正常使用它们,您需要一个名为unluac或luadec的外部程序,但为此,我们将在基本lua中进行操作.我建议使用repl.it来运行代码.

Ok so to get those normally you would need a external program called unluac or luadec but for this we will be doing it in base lua. I recommend using repl.it to run the code.

所以我们需要的主要是LOADK,因为它会加载一个常量

So the main thing we will need is LOADK as it loads a constant

常量是变量或其他任何实际不变的变量:局部值= 1

A constant is a variable or anything really that doesn’t change ex: local value = 1

现在不是常数的是变化的东西.

Now what isn’t a constant is something that changes.

现在您可能已经听说过铁酿造和突触Xen,它们都是3ds和Defcon42创建的lua混淆器

Now you probaly have heard of iron brew and synapse xen both are very known lua obfuscators created by 3ds and Defcon42

铁酒和xen有一些共同点(基本),它们不是lbis,因此通常不会从它们那里获得操作码.但是它们有一个包含所有常量的表(对Xen进行了加密),以使这些表具有table.concat和global的整个过程,但这并不能吸引其他混淆器. Luraph是不同的,尽管因为它是一个lbi,所以不需要其中包含所有常量的表.取而代之的是获取常量,我们需要一种从脚本获取指令的方法.操作码是指令.它们是指令,因为操作码会告诉lua如何处理代码.好的,我们如何获得这些说明?

Iron brew and xen have something in common (well the base) they aren’t lbis so you don’t usually get the opcodes from them. But they have a table that has all the constants in them (xen is encrypted) to get these tables there is a whole process with table.concat and global but that’s not luraph that’s other obfuscators. Luraph is different Though because it is a lbi so there is no need for a table with all the constants in it. Instead to get the constants we need a way to get the instructions from a script. Opcodes are instructions. They are instructions because opcodes tell lua what to do with code. Ok so how do we get these instructions?

此处是有关操作码和说明的文章: http://luaforge.net/docman/83​​/98/ANoFrillsIntroToLua51VMInstructions.pdf

Here is a article on opcodes and instructions: http://luaforge.net/docman/83/98/ANoFrillsIntroToLua51VMInstructions.pdf

所以它们都有签名: "sBx" 一种" "A","B" "A","Bx" "A","C" "A","sBx" "A","B","C" 您可以从这些指令中获得操作码参数. 现在,不同的混淆器具有不同的操作码指令,因此要获得成功,您必须找到它们.好的,所以请使用反汇编器或自己制作,但这是我的朋友制作的反汇编器: https://github.com/op0x59/reddisassembler

So they all have signatures: "sBx" "A" "A", "B" "A", "Bx" "A", "C" "A", "sBx" "A", "B", "C" You get opcodes args from these instructions. Now different obfuscators have different opcodes instructions so for luraph you will have to find them. Ok so use a dissembler or make Your own but here is a disassembler made by my friend: https://github.com/op0x59/reddisassembler

您将需要进入repl.it并进行回购,然后添加代码并使用设置对其进行格式化.在设置中包含操作码的位置,您将需要从luraph手动获取这些操作码.

You will need to go onto repl.it and make a repo then add the code and format it etc with the settings. Where in the settings it has opcodes you will need to manually get these from luraph.

那么您就可以做到这一点.如果您需要更多帮助,请与我联系: turtsis#6969 或者 turtsis#2785

So there you go that’s how you can do it. If you need more help dm me on discord: turtsis#6969 Or turtsis#2785

此外,如果有人在这里回答我的问题,并将其发布在V3RMILLION上,而没有给予我信用,请停止或给予我信用.

ALSO WHOEVER IS STEALING MY ANSWERS ON HERE AND POSTING THEM ON V3RMILLION WITH OUT CREDITING ME PLEASE STOP OR GIVE ME CREDIT.

这篇关于我需要任何可以解码"Luraph Obfuscator"的人.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆