fawean 发表于 2023-4-1 22:00

求解lua语言代码混淆转python

有机油给本人发了一段lua代码,我看本质上是进行加密,我尝试将其覆写为python代码从而进一步破解,但是结果却不如人意,有无大佬告知我python代码的问题local a = loadstring(
    (function(b,c)
      -- 定义按位异或函数
      function bxor(d,e)
            local f={{0,1},{1,0}}
            local g=1;
            local h=0;
            while d>0 or e>0 do
                h=h+f*g;
                d=math.floor(d/2)
                e=math.floor(e/2)
                g=g*2
            end
            return h
      end
      
      -- 定义将字符串转换为数值数组的函数
      local i=function(b)
            local j={}
            local k=1;
            local l=b
            while l>=0 do
                j=b
                k=k+1;
                l=b
            end
            return j
      end
      
      -- 定义将数值数组与密钥进行按位异或的函数
      local m=function(b,c)
            if #c <= 0 then
                return {}
            end
            local k=1;
            local n=1;
            for k=1,#b do
                b=bxor(b,string.byte(c,n))
                n=n+1;
                if n > #c then
                  n=1
                end
            end
            return b
      end
      
      -- 定义将数值数组转换为字符串的函数
      local o=function(b)
            local j=""
            for k=1,#b do
                j=j..string.char(b)
            end
            return j
      end
      
      return o(m(i(b),c)) -- 调用函数:先将字符串转换为数值数组,再进行按位异或,最后将数值数组转换为字符串并返回
    end)({####},“****”) -- 调用匿名函数并传入两个参数:####和****
)

接下来是我写的python
def bxor(d, e):
    f = [, ]
    g = 1
    h = 0
    while d > 0 or e > 0:
      h = h + f * g
      d = d // 2
      e = e // 2
      g = g * 2
    return h

def i(b):
    j = []
    k = 1
    l = b
    while l >= 0:
      j.append(b)
      k = k + 1
      l = b
    return j

def m(b, c):
    if len(c) <= 0:
      return []
    k = 1
    n = 1
    for k in range(len(b)):
      b = bxor(b, ord(c))
      n = n + 1
      if n > len(c):
            n = 1
    return b

def o(b):
    j = ""
    for k in range(len(b)):
      j = j + chr(b)
    return j

a = [####]
print(o(m(i(a), “****”)))


页: [1]
查看完整版本: 求解lua语言代码混淆转python