开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 3176|回复: 25
收起左侧

[完成] 用易语言编码转换,对编码感兴趣的进

 关闭 [复制链接]
结帖率:98% (54/55)
发表于 2019-9-27 16:38:55 | 显示全部楼层 |阅读模式   湖北省天门市
15精币
事情是这样的,需要被编码的对象是已知的lua代码,比如附件中这段代码,对编码问题感兴趣的一定要下载来看看,它是Lua语言5.1的,通常作者为了防止小白乱改代码,就把它“加密”,所谓的加密其实不是真正的加密,只不过是用一种编码格式转换了一下编码罢了,比如把代码进行base64decode,它就会变成小白看不懂的字符串,从而防止小白乱篡改导致的脚本失效等,保护了小白。

现在我手上就有一个脚本工具,初步观察就是用易语言写的,只要把我帖子里的附件中的“代价密的Lua.txt”导入到这里,点击按钮就可以把编码后的字节集写出一个txt文件。


我手上的编码工具下载链接:
https://lanzoux.com/i6fmhkf  如果链接失效我会在楼下补的,请仔细看帖子回复就会有





使用方法:点“罗技宏综合功能”,

点“导入需要加解密的罗技代码”

只需要导入一个txt文本



2019年09月27日14时07分25秒.jpg

2019年09月27日16时15分15秒.jpg

然后√上“加密代码”,点“加密”

2019年09月27日14时19分26秒.jpg


点完“加密”按钮它会自动“编码”,并将编码好的东西写出到当前运行目录下,生成一个txt文件,大佬们可以拿我附件中的“待加密的Lua”txt用链接里面给的工具测试一下。还是比较好用的。

2019年09月27日14时19分50秒.jpg


2019年09月27日14时18分59秒.jpg


原理:
它貌似用到了某种编码,然后再给之前的变量 code,再拿去loadstring了一下,最终把得到的文本写出txt就行了。
但是这个“给之前的变量 code”到底是怎么code我也没弄明白,“再拿去loadstring”是怎么loadstring我也不知道怎么操作,只好请教大佬了。
采纳率是100%,能解决一定采纳的。我还特别喜欢给大佬加评分!期待解答!






但是这个脚本的其他功能我用不到,比如每次打开这个工具都会弹出让你加QQ群的消息,
2019年09月27日14时14分47秒.jpg

很烦!而且每次打开它都要等它弹完QQ才能启动工具,所以我想自己写一个,因为我只用得到这个编码工具,也就是所谓的“加密”,想单独把这个编码功能单独做成一个小工具,导入txt,按下”加密“按钮就生成一个加密后的txt文件。
期待懂lua和各种编码格式的大神给与指点,希望受路过的大佬一言指点,或者详细帮助,以后还会有跟多的问题在积分定制区向各位人士请教,虚心学习方法和易语言知识。


相关技术贴[url=][url=][url=][url=]链接:供大佬参考的帖子:[/url][/url][/url][/url][url=][url=][url=][/url][/url][/url][url=][url=][url=][/url][/url][/url][url=][url=][url=][/url][/url][/url]https://www.52pojie.cn/thread-804227-1-1.html
看看能否有所启发。



待加密的Lua.txt

1.89 KB, 下载次数: 8, 下载积分: 精币 -1 枚

待加密的文本

最佳答案

查看完整内容

1+2=3都知道了 3-2=1就这么难么....
结帖率:100% (10/10)
发表于 2019-9-27 16:38:56 | 显示全部楼层   山东省济南市
1+2=3都知道了
3-2=1就这么难么....
回复

使用道具 举报

结帖率:89% (67/75)

签到天数: 3 天

发表于 2019-9-27 17:34:31 | 显示全部楼层   广东省东莞市
lua有很多加密方法的呀,不止这一种
回复

使用道具 举报

结帖率:98% (54/55)
 楼主| 发表于 2019-9-27 18:54:50 | 显示全部楼层   湖北省天门市
peid王思聪 发表于 2019-9-27 17:34
lua有很多加密方法的呀,不止这一种

那你这个算是回答吗?你知道很多种,却一种都不肯说,跟没说一样
回复

使用道具 举报

结帖率:98% (54/55)
 楼主| 发表于 2019-9-27 19:30:41 | 显示全部楼层   湖北省天门市
没有人懂这个吗?那有没有人能告诉我,这个图里面是什么加密方式,具体怎么实现?具体实现

2019年09月27日14时18分59秒.jpg
回复

使用道具 举报

结帖率:100% (10/10)
发表于 2019-9-27 19:41:02 | 显示全部楼层   山东省济南市
这个吧  其实很简单的  稍等给你附上原理
回复

使用道具 举报

结帖率:100% (10/10)
发表于 2019-9-27 19:55:13 | 显示全部楼层   山东省济南市
1.loadstring()函数
这个函数是将文本参数转化成一个函数返回(所以[加密宏.txt]这个lua脚本中loadstring()函数中参数部分整体返回的是一个文本字符串)

2.分析loadstring()的文本参数
简化一下(加密后的内容有点烦,看清楚原理即可),是这个样子
  1. loadstring((function()
  2.         local _d ={65,50,325,490,555,5} //_d这个是加密后的文本
  3.         local _t = ""
  4.         for _i = 1,#_d do //将_d迭代
  5.         _t = _t..string.char(_d[_i]/5)  //将_d中的成员解密为_t  -> _t = _t + 字符(_d[_i]/5)
  6.         end
  7.         return _t
  8.         end
  9.     )())()
复制代码


3.易语言写出解密代码
  
子程序名返回值类型公开备 注
解密代码文本型 
参数名类 型参考可空数组备 注
p_加密后的代码文本型
变量名类 型静态数组备 注
local_加密后的代码快速文本对象 
local_加密后的代码_数组文本型0
local_解密后代码快速文本对象 
local_i整数型 
local_加密后的代码.添加 (p_加密后的代码)
' 删除首尾的两个大括号
local_加密后的代码.删除字符 (1, 1)
local_加密后的代码.删除字符 (-1, 1)
local_加密后的代码_数组 = local_加密后的代码.分割文本 (“,”, )
计次循环首 (取数组成员数 (local_加密后的代码_数组), local_i)
local_解密后代码.添加 (字符 (到整数 (local_加密后的代码_数组 [local_i]) ÷ 5))
计次循环尾 ()
返回 (local_解密后代码.取文本 (, ))


i支持库列表   支持库注释   
commobj通用对象支持库


4.测试
QQ截图20190927195430.png


点评

非常给力,大佬上传源码可以不,对最下面的支持库不是很懂   湖北省天门市  发表于 2019-9-27 21:54

评分

参与人数 2好评 +2 精币 +2 收起 理由
sos120 + 1 + 2 非常感谢大佬花时间回答
kagari + 1 支持开源~!感谢分享

查看全部评分

回复

使用道具 举报

结帖率:100% (10/10)
发表于 2019-9-27 20:09:46 | 显示全部楼层   山东省济南市
其实这种lua的加密方式是非常不安全的,如果lua脚本是商用,不建议这种加密方式,如果仅仅是防止小白误改代码
建议采用:将[待加密脚本.lua]整体用算法加密成[加密脚本.dat]文件,然后软件内部调用lua时将[加密脚本.dat]解密加载即可,这样即使小白用工具打开[加密脚本.dat],看到的也是"一串乱码",并且对你之后维护也很好维护

点评

有问题追评即可   山东省济南市  发表于 2019-9-27 20:10
回复

使用道具 举报

结帖率:98% (54/55)
 楼主| 发表于 2019-9-27 21:48:58 | 显示全部楼层   湖北省天门市
kdabiao 发表于 2019-9-27 20:09
其实这种lua的加密方式是非常不安全的,如果lua脚本是商用,不建议这种加密方式,如果仅仅是防止小白误改代码
...

非常感谢,能把源码发上来不,不然我得抄一遍
回复

使用道具 举报

结帖率:98% (54/55)
 楼主| 发表于 2019-9-27 21:53:14 | 显示全部楼层   湖北省天门市
kdabiao 发表于 2019-9-27 20:09
其实这种lua的加密方式是非常不安全的,如果lua脚本是商用,不建议这种加密方式,如果仅仅是防止小白误改代码
...

,我也发现了,当我加密一个空文本的时候,它也会有着代码,这个函数的样子是这个样子的:
loadstring((function() local ___________________________________________________________________d ={“被加密的代码塞进去”}local ___________________________________________________________________t = "" for ___________________________________________________________________i = 1,#___________________________________________________________________d do                 ___________________________________________________________________t = ___________________________________________________________________t..string.char(___________________________________________________________________d[___________________________________________________________________i]/8) end return ___________________________________________________________________t end)())()

通常是i]/3或i]/5或i]/8随机出现,返回值是“ ___________________________________________________________________t ”




回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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