开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 5117|回复: 12
收起左侧

[完成] 这个Lua脚本我不会解密了,大佬教一下

 关闭 [复制链接]
结帖率:98% (54/55)
发表于 2019-11-15 00:01:13 | 显示全部楼层 |阅读模式   湖北省天门市
10精币
Lua通常的加密是loadstring,但是这个加密方式它绕弯子绕得我看不懂了,希望大佬可以教一下,加密方式如下,大括号里面的“加密内容”我把他用汉字“加密内容”代替,因为这段太长了,看起来不方便,整段我上传到蓝奏云网盘里面:
https://lanzoux.com/i7dc1ib,对Lua编码感兴趣的一定要下载来分析一下,如果把被加密的部分用“加密内容”代替,就是如下:

  1. 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[d%2+1][e%2+1]*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[k]while l>=0 do j[k]=b[l+1]k=k+1;l=b[k]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[k]=bxor(b[k],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[k])end;return j end;return o(m(i(b),c))end)({加密内容},key))if a then a()else print("密码错误")end
复制代码

我把以上内容格式化了一下,变成了如下的样子:
  1. local a =
  2.     loadstring(
  3.     (function(b, c)
  4.         function bxor(d, e)
  5.             local f = {{0, 1}, {1, 0}}
  6.             local g = 1
  7.             local h = 0
  8.             while d > 0 or e > 0 do
  9.                 h = h + f[d % 2 + 1][e % 2 + 1] * g
  10.                 d = math.floor(d / 2)
  11.                 e = math.floor(e / 2)
  12.                 g = g * 2
  13.             end
  14.             return h
  15.         end
  16.         local i = function(b)
  17.             local j = {}
  18.             local k = 1
  19.             local l = b[k]
  20.             while l >= 0 do
  21.                 j[k] = b[l + 1]
  22.                 k = k + 1
  23.                 l = b[k]
  24.             end
  25.             return j
  26.         end
  27.         local m = function(b, c)
  28.             if #c <= 0 then
  29.                 return {}
  30.             end
  31.             local k = 1
  32.             local n = 1
  33.             for k = 1, #b do
  34.                 b[k] = bxor(b[k], string.byte(c, n))
  35.                 n = n + 1
  36.                 if n > #c then
  37.                     n = 1
  38.                 end
  39.             end
  40.             return b
  41.         end
  42.         local o = function(b)
  43.             local j = ""
  44.             for k = 1, #b do
  45.                 j = j .. string.char(b[k])
  46.             end
  47.             return j
  48.         end
  49.         return o(m(i(b), c))
  50.     end)({加密内容}, key)
  51. )
  52. if a then
  53.     a()
  54. else
  55.     print("密码错误")
  56. end
复制代码
希望大佬可以帮忙看看这个方式要怎么解密,希望可以给出解密思路,或者把它绕的弯子给它简化一下,希望可以跟大佬学习一些。


最佳答案

查看完整内容

a -> lua脚本对象 loadstring(p_脚本文本) -> a function 解密脚本 (p_加密后的脚本 , p_密码) -> p_脚本文本 p_加密后的脚本 -> 已知 p_密码 -> 变量key -> 未知[!!!][需要想办法知道这个值才能解出真正的脚本] 函数[解密脚本]需要下面几个功能函数: function i(p_参数) function m(p_参数1, p_参数2) function o(p_参数) 解密脚本=o(m(i(p_加密后的脚本), p_密码)) 补充内容 (2019-11-15 22:45): key ...
结帖率:100% (10/10)
发表于 2019-11-15 00:01:14 | 显示全部楼层   山东省济南市
a -> lua脚本对象

loadstring(p_脚本文本) -> a


function 解密脚本 (p_加密后的脚本 , p_密码) -> p_脚本文本
        p_加密后的脚本 -> 已知
        p_密码 -> 变量key -> 未知[!!!][需要想办法知道这个值才能解出真正的脚本]



函数[解密脚本]需要下面几个功能函数:
function i(p_参数)
function m(p_参数1, p_参数2)
function o(p_参数)

解密脚本=o(m(i(p_加密后的脚本), p_密码))


















补充内容 (2019-11-15 22:45):
key是一个文本类型的  所以直接跳过用整数遍历尝试的方法

补充内容 (2019-11-15 23:10):
如果没用lua脚本文件完整性校验的话,直接这样改可以直接拿到key:

在return o(m(i(b), c))这一句之前加上print(c)

这个c就是key

补充内容 (2019-11-15 23:11):
bxor就是易语言的位异或()不需要自己翻译写

评分

参与人数 1好评 +1 精币 +2 收起 理由
sos120 + 1 + 2 先给你这个答案加分再说,有点提示,请继续答题,谢谢!

查看全部评分

回复

使用道具 举报

结帖率:98% (54/55)
 楼主| 发表于 2019-11-15 00:21:04 | 显示全部楼层   湖北省天门市
@kdabiao 大佬,这次实在不会了,自己研究了很久,需要点拨
回复

使用道具 举报

结帖率:98% (54/55)
 楼主| 发表于 2019-11-15 00:21:25 | 显示全部楼层   湖北省天门市
@peid王思聪 有没有可以提供的线索
回复

使用道具 举报

结帖率:89% (67/75)

签到天数: 3 天

发表于 2019-11-15 01:40:53 | 显示全部楼层   广东省东莞市
这个不太懂

评分

参与人数 1好评 +1 精币 +2 收起 理由
sos120 + 1 + 2 奉上小小红包希望笑纳

查看全部评分

回复

使用道具 举报

结帖率:89% (67/75)

签到天数: 3 天

发表于 2019-11-15 01:44:14 | 显示全部楼层   广东省东莞市
要是说注入破J我还会点
回复

使用道具 举报

结帖率:100% (10/10)
发表于 2019-11-15 22:24:10 | 显示全部楼层   山东省济南市
看一下 等会给你附上原理

评分

参与人数 1好评 +1 精币 +2 收起 理由
sos120 + 1 + 2 感谢热心帮助!

查看全部评分

回复

使用道具 举报

结帖率:98% (54/55)
 楼主| 发表于 2019-11-16 00:00:25 | 显示全部楼层   湖北省天门市
kdabiao 发表于 2019-11-15 22:43
a -> lua脚本对象

loadstring(p_脚本文本) -> a

我有key,在这段的上面有一个:
  1. ky="57467042"
  2. key="574670425AA"
复制代码


这个key="574670425AA"应该就是秘钥,上面的ky不知道是干嘛的,也许是掩人耳目的。
知道key的值是不是就可以成功解密了,要如何解密,如果写个工具专门解密这个加密的话加分感谢。
就是需要输入key的值,然后就可以解密,如下:

2019年11月15日23时59分48秒.jpg
回复

使用道具 举报

结帖率:100% (10/10)
发表于 2019-11-16 01:10:37 | 显示全部楼层   山东省济南市
要不就去定制区 要不就自己动手 不懂得地方继续追问,等着被喂食貌似不是一个好的学习状态

评分

参与人数 1精币 +1 收起 理由
sos120 + 1 感谢大佬教育

查看全部评分

回复

使用道具 举报

结帖率:98% (54/55)
 楼主| 发表于 2019-11-16 01:13:33 | 显示全部楼层   湖北省天门市
kdabiao 发表于 2019-11-16 01:10
要不就去定制区 要不就自己动手 不懂得地方继续追问,等着被喂食貌似不是一个好的学习状态

感谢大佬教育,想问下那上面的那个ky是不是掩人耳目的,然后知道key的话大佬可否只帮忙解密此Lua呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表