如何解密该 LUA 代码?

我自己无法克服这个问题,我也无法解密那个代码,我找到了一些工具,但它们对我没用。

有人能解密那段代码吗?

loadstring('\27\76\117\97\81\0\1\4\4\4\8\0\16\0\0\0\64\116\111\66\121\116\101\67\111\100\101\46\108\117\97\0\2\0\0\0\20\0\0\0\0\0\0\3\11\0\0\0\5\0\0\0\6\64\64\0\65\128\0\0\164\0\0\0\28\64\128\1\5\192\0\0\6\64\64\0\65\0\1\0\164\64\0\0\28\64\128\1\30\0\128\0\5\0\0\0\4\19\0\0\0\69\102\102\101\99\116\77\101\115\115\97\103\101\80\114\111\120\121\0\4\10\0\0\0\79\110\82\101\99\101\105\118\101\0\4\11\0\0\0\68\105\99\101\69\102\102\101\99\116\0\4\17\0\0\0\76\111\99\97\108\83\112\101\101\99\104\80\114\111\120\121\0\4\11\0\0\0\83\97\121\67\97\116\99\104\101\114\0\2\0\0\0\0\0\0\0\4\0\0\0\11\0\0\0\0\5\0\9\17\0\0\0\69\1\0\0\70\65\192\2\128\1\128\0\197\129\0\0\198\193\192\3\220\129\128\0\1\2\1\0\213\1\130\3\92\129\128\1\90\1\0\0\22\0\1\128\133\65\1\0\134\129\65\3\193\193\1\0\12\2\194\2\156\65\128\1\30\0\128\0\9\0\0\0\4\7\0\0\0\115\116\114\105\110\103\0\4\6\0\0\0\109\97\116\99\104\0\4\5\0\0\0\83\101\108\102\0\4\5\0\0\0\78\97\109\101\0\4\16\0\0\0\32\114\111\108\108\101\100\32\97\32\40\46\43\41\46\0\4\7\0\0\0\83\105\103\110\97\108\0\4\5\0\0\0\83\101\110\100\0\4\11\0\0\0\68\105\99\101\82\111\108\108\101\100\0\3\0\0\0\0\0\0\0\0\0\0\0\0\17\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\6\0\0\0\7\0\0\0\7\0\0\0\8\0\0\0\8\0\0\0\8\0\0\0\8\0\0\0\8\0\0\0\11\0\0\0\6\0\0\0\7\0\0\0\115\105\103\110\97\108\0\0\0\0\0\16\0\0\0\8\0\0\0\109\101\115\115\97\103\101\0\0\0\0\0\16\0\0\0\2\0\0\0\120\0\0\0\0\0\16\0\0\0\2\0\0\0\121\0\0\0\0\0\16\0\0\0\2\0\0\0\122\0\0\0\0\0\16\0\0\0\14\0\0\0\82\111\108\108\101\100\95\78\117\109\98\101\114\0\9\0\0\0\16\0\0\0\0\0\0\0\0\0\0\0\14\0\0\0\18\0\0\0\0\5\0\8\8\0\0\0\69\1\0\0\70\65\192\2\129\129\0\0\202\129\0\0\201\129\128\129\201\1\1\130\92\65\128\1\30\0\128\0\5\0\0\0\4\7\0\0\0\83\105\103\110\97\108\0\4\5\0\0\0\83\101\110\100\0\4\11\0\0\0\65\110\97\108\121\122\101\83\97\121\0\4\9\0\0\0\99\114\101\97\116\117\114\101\0\4\8\0\0\0\109\101\115\115\97\103\101\0\0\0\0\0\8\0\0\0\16\0\0\0\16\0\0\0\16\0\0\0\16\0\0\0\16\0\0\0\16\0\0\0\18\0\0\0\5\0\0\0\6\0\0\0\112\114\111\120\121\0\0\0\0\0\7\0\0\0\6\0\0\0\109\116\121\112\101\0\0\0\0\0\7\0\0\0\8\0\0\0\115\112\101\97\107\101\114\0\0\0\0\0\7\0\0\0\6\0\0\0\108\101\118\101\108\0\0\0\0\0\7\0\0\0\5\0\0\0\116\101\120\116\0\0\0\0\0\7\0\0\0\0\0\0\0\11\0\0\0\4\0\0\0\4\0\0\0\4\0\0\0\11\0\0\0\4\0\0\0\14\0\0\0\14\0\0\0\14\0\0\0\18\0\0\0\14\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0')()
点赞
用户107090
用户107090

这不是加密的 Lua 代码:它是预编译的 Lua 代码。按照 Sean 的建议,将字节保存到文件中。然后获取 Lua 5.1,在一台32位的机器上编译,然后在保存的文件上运行“luac -l”。你会得到下面这个列表,这不是 Lua 源代码,但如果需要,它可能会帮助你重建它。

<toByteCode.lua:2,20>函数(11条指令,44字节,开始位置0x8c9dd00)
0个参数,3个Slot,0个Upvalue,0个Local,5个常量,2个函数
    1       [4]     GETGLOBAL       0 -1    ; EffectMessageProxy
    2       [4]     GETTABLE        0 0 -2  ; "OnReceive"
    3       [4]     LOADK           1 -3    ; "DiceEffect"
    4       [11]    CLOSURE         2 0     ; 0x8c9ded0
    5       [4]     CALL            0 3 1
    6       [14]    GETGLOBAL       0 -4    ; LocalSpeechProxy
    7       [14]    GETTABLE        0 0 -2  ; "OnReceive"
    8       [14]    LOADK           1 -5    ; "SayCatcher"
    9       [18]    CLOSURE         2 1     ; 0x8c9e228
    10      [14]    CALL            0 3 1
    11      [20]    RETURN          0 1

<toByteCode.lua:4,11>函数(17条指令,68字节,开始位置0x8c9ded0)
5个参数,9个Slot,0个Upvalue,6个Local,9个常量,0个函数
    1       [6]     GETGLOBAL       5 -1    ; string
    2       [6]     GETTABLE        5 5 -2  ; "match"
    3       [6]     MOVE            6 1
    4       [6]     GETGLOBAL       7 -3    ; Self
    5       [6]     GETTABLE        7 7 -4  ; "Name"
    6       [6]     CALL            7 1 2
    7       [6]     LOADK           8 -5    ; " rolled a (.+)."
    8       [6]     CONCAT          7 7 8
    9       [6]     CALL            5 3 2
    10      [7]     TEST            5 0 0
    11      [7]     JMP             5       ; to 17
    12      [8]     GETGLOBAL       6 -6    ; Signal
    13      [8]     GETTABLE        6 6 -7  ; "Send"
    14      [8]     LOADK           7 -8    ; "DiceRolled"
    15      [8]     ADD             8 5 -9  ; - 0
    16      [8]     CALL            6 3 1
    17      [11]    RETURN          0 1

<toByteCode.lua:14,18>函数(8条指令,32字节,开始位置0x8c9e228)
5个参数,8个Slot,0个Upvalue,5个Local,5个常量,0个函数
    1       [16]    GETGLOBAL       5 -1    ; Signal
    2       [16]    GETTABLE        5 5 -2  ; "Send"
    3       [16]    LOADK           6 -3    ; "AnalyzeSay"
    4       [16]    NEWTABLE        7 0 2
    5       [16]    SETTABLE        7 -4 2  ; "creature" -
    6       [16]    SETTABLE        7 -5 4  ; "message" -
    7       [16]    CALL            5 3 1
    8       [18]    RETURN          0 1
2014-05-12 16:06:39
用户3629357
用户3629357

使用 luadec

--使用 luadec 2.0.1 by sztupy (http://winmo.sztupy.hu)进行反编译

EffectMessageProxy.OnReceive("DiceEffect",
   function(a0, a1, a2, a3, a4)
      local Rolled_Number = string.match(a1, Self.Name().." rolled a (.+).")
      if Rolled_Number then
         Signal.Send("DiceRolled", Rolled_Number + 0)
      end
   end
)
LocalSpeechProxy.OnReceive("SayCatcher",
   function(b0, b1, b2, b3, b4)
      Signal.Send("AnalyzeSay", {creature = b2, message = b4})
   end
)
2014-05-12 16:34:22
用户3629357
用户3629357

关于这个large bytecode

不幸的是,Luadec 无法反编译此字节码。

但是它成功地反汇编了它

名称Tiusu Frontline被隐藏了。 但并不够隐蔽 :-)

在以下行中,您可以看到将相应字符的ascii值形成字符串'Tiusu Frontline'的过程:

36865 [-]: LOADK     R6 K28       ; R6 := 84
36866 [-]: LOADK     R7 K29       ; R7 := 105
36867 [-]: LOADK     R8 K30       ; R8 := 117
36868 [-]: LOADK     R9 K31       ; R9 := 115
36869 [-]: LOADK     R10 K30      ; R10 := 117
36870 [-]: LOADK     R11 K32      ; R11 := 32
36871 [-]: LOADK     R12 K33      ; R12 := 70
36872 [-]: LOADK     R13 K34      ; R13 := 114
36873 [-]: LOADK     R14 K35      ; R14 := 111
36874 [-]: LOADK     R15 K36      ; R15 := 110
36875 [-]: LOADK     R16 K37      ; R16 := 116
36876 [-]: LOADK     R17 K38      ; R17 := 108
36877 [-]: LOADK     R18 K29      ; R18 := 105
36878 [-]: LOADK     R19 K36      ; R19 := 110
36879 [-]: LOADK     R20 K39      ; R20 := 101
36880 [-]: CALL      R5 16 2      ; R5 := R5(R6,R7,R8,R9,R10,R11,R12,R13,R14,R15,R16,R17,R18,R19,R20)

在此反汇编器输出中还有一些类似的片段,从相同的ASCII代码中构建相同的字符串。

可能,将该字节码文件打补丁以将名称“Tiusu Frontline”更改为其他名称不会太难。

2014-05-15 15:02:11