不少安全专家表示,在互联网上失去对代码的控制,就像把银行的设计图交给抢劫犯一样。

Lua是一种被广泛用于游戏开发中的计算机语言,方便开发者定制自己所需的功能。其中,红遍全球的《愤怒的小鸟》就是由Lua语言用Wax开发的。此外,梦幻西游、奇迹暖暖、开心消消乐、放置奇兵、最强蜗牛等手游也采用了Lua语言进行编写。

近年来,Lua脚本在游戏行业长期流行,但Lua脚本泄露事件屡见不鲜,其安全性也引起关注。不法分子通过开私服、开外挂等途径,实现对游戏代码的商业变现,这给游戏开发者造成巨大经济损失,也危及游戏玩家包括账号、物件在内的虚拟资产安全。

本文将聚焦Lua脚本加密,深入阐述Lua常见的三种加密方式,并探索如何进一步的保护Lua代码。

一、背景

“Lua”在葡萄牙语中是“月亮”的意思,1993年由巴西的Pontifical Catholic University开发。

作为小巧的解释性语言,Lua具有简单、轻量、易维护的特点,且可以根据自身的特性来模拟面向对象,因此其被嵌入到越来越多的应用中,特别是游戏中,为游戏开发带来了很大的便捷性。例如,Cocos引擎的主流游戏、U3D游戏中的热更框架xlua都会用到Lua语言。

同时,由于Lua语言自身的这些特性,Lua代码本身并不安全,很多时候攻击者可以获取Lua源码进行阅读,分析,盗用以及篡改等,然后进一步的重打包,给游戏本身带来了很大的安全隐患。

二、Lua现有的保护

对于这种脚本解释性语言,从代码保护的角度跟它自身所表现的形式是密不可分的,对于Lua而言,目前市面上手游包中可以看到的主要是lua源码,luac,luajit三种的表现形式,接下来会详细的介绍每一种形式以及自身现有的保护以及所暴漏出来的优缺点。

2.1Lua源码

目前市面上用到Lua源码本身在游戏中呈现的并不是很多,但是在一些热更下发中会比较多;因此从源码保护的思路会很容易的想到针对Lua源码本身进行混淆保护的方案;目前市面上针对Lua源码进行混淆的厂家主要有以下这几家:

XFuscator:

Luraph:

Syanpse Xen:

Ironbrew:

Verdict:

对于这种基于源码的混淆,优点是是Lua经过处理以后更加的复杂化了,增大了攻击者进行分析的成本和难度;由于攻防升级,对于上面的混淆也有相对的反混淆处理方式。同时混淆除了自己混淆本身所表现出来的兼容性问题以外,对于开发者也有以下这几个问题:

1.同一段代码的混淆在不同时间进行混淆,所得到的混淆效果是不同的:

由于混淆器为了增大混淆的程度和难度,里面会有随机的代码要进行热更,热更的时候会进行比较,这样没办法进行热更处理;

2.针对Lua语法混淆的兼容性问题:

由于Lua语法的灵活性,因此去混淆处理的兼容性问题比较多;

3.开发者接入问题:

对于开发者而言进行接入以及出现问题跟第三方进行沟通解决的成本比较大;

2.2luac的形式

luac是作为自己的语言的字节码格式,与其他脚本语言python等虚拟机中所表现的出来是一样的,等Lua加载到内存中以后,虚拟机会加载对应的字节码,由于lua主要有5.1、5.2、5.3三个版本,因此也会有对应的三个格式的luac版本,目前在手游中主流是5.2的版本;

虽然说luac不会以源码的形式出现,但是由于Lua字节码的执行以及格式可以根据在Lua源码中进行探知到,比如luadec反编译工具,因此luac形式还是不安全的。目前市面上对于这种保护主要有三个形式:

2.2.1:Luac的加密

从Lua的虚拟机源码处可以得知在luaL_loadbuffer函数会加载Lua,因此有安全意识的厂家会对Lua进行加密。修改这个源码,在真正的执行前进行解密;

但是由于虚拟机的执行过程是开源的,并且由于cocos工程编译处理需要静态链接对应的引擎库,这样对应的引擎so文件是有符号的,因此对于攻击者来说,在luaL_loadbuffer函数处可以进行内存的DUMP得到正常的字节码,然后使用反编译工具进行处理,进行进一步的修改;

2.2.2:修改Lua虚拟机中opcode的顺序

对于Lua这种解释性语言,无论是虚拟机,还是对应反编译工具都是有一个固定的opcode的顺序,有意识的安全厂商会通过修改对应的opcode的顺序进行保护,如下图所示:左边是正常opcode的顺序,右边是进行随机化以后的opcode的;

这样从新编译处理完以后的luac可以看到如下图所示:对应的opcode是不一样的;

opcode不一样以及对应的解释顺序是如下:

python写梦幻西游手游脚本辅助_深入解析Lua脚本加密技术,给游戏代码加上“紧箍咒”...相关推荐

  1. python写梦幻西游手游脚本_PyCharm2020.1 全新版本助力你的编程路

    人生苦短,我用python,可以说是Python程序员的口头禅了,而Pycharm便是Python编程最广泛使用的编程软件之一:因为其干净利落的界面,超方便的功能特性,许多老师在相关编程课上,也都会使 ...

  2. python写梦幻西游手游脚本辅助_3 行 python 代码帮你轻松实现” 自动发送测试报告 “到指定邮箱...

    此文章来源于项目官方公众号:"AirtestProject" 版权声明:允许转载,但转载必须保留原链接:请勿用作商业或者非法用途 前言 大多数情况下,跑完用例脚本之后,我们需要把测 ...

  3. python写梦幻西游脚本精灵_python写的梦幻手游辅助工具,非外 挂

    本帖最后由 天福 于 2015-3-5 10:58 编辑 写的一般都是B/S的东西,第一次写C/S: 一般功能: 1.梦幻西游手游10个鬼抓完自动 领 取下一轮 2.自动 领 取 队长礼盒和使用 3. ...

  4. python 梦幻西游手游脚本_梦幻西游手游抢怪有什么技巧 梦幻西游抢怪技巧

    今天小编为大家带来了梦幻西游手游抢怪有什么技巧 梦幻西游抢怪技巧,感兴趣的朋友们可以跟着小编去下文了解一下哦! 游戏中的资源就在那里不多不少,你抢或不抢都随你,但是你能得多少就不能随你啦!在游戏中抢怪 ...

  5. 分享个甲铁城手游的辅助脚本,能够自动刷副本刷资源

    分享个甲铁城手游的辅助脚本,能够自动刷副本刷资源 甲铁城的卡巴内瑞-这个手游中伙伴穿戴装备以及升星培养(升星只需消耗伙伴碎片)能增加人偶的属性与被动技能效果.伙伴的品质越高能为玩家增加的战斗力也就越多 ...

  6. layuiadmin上手好难_梦幻西游手游哪个门派好 如何选择正确职业

    梦幻西游手游是本篇主要内容,小编给你推荐2020最新的梦幻西游游戏攻略,梦幻西游如何选择正确职业. 梦幻西游手游无限仙玉qq群:930380709 梦幻西游手游中共有六大门派供玩家选择,哪个门派好?新 ...

  7. 和ts一般怎么玩_攻略|梦幻西游手游:金币小号怎么玩?高手一般都这么弄

    恭喜发财,我是大白!~ 梦幻西游手游里,很多玩家已经开始意识到小号的重要性!无论是游戏中朋友的弃坑号还是自己练的号,每个人手上或多或少都有一点吧?但是小号你真的会用吗?今天大白就来分享一下,专业的小号 ...

  8. 【手游】梦幻西游手游 美术资源加密分析

    最近研究了一下梦幻西游手游版的资源打包方式其中就用到了Hash表索引 0x00 先看看梦幻西游手游的资源目录 ┌─HashRes ┊        ├─00 ┊               ├─000 ...

  9. 鸿蒙符助战选哪个,梦幻西游手游大唐助战伙伴哪个好 大唐官府助战伙伴选择推荐...

    梦幻西游手游游戏中助战伙伴的选择是非常重要的,那么游戏中大唐这个门派怎么选择助战伙伴呢?下面就请看小编为大家带来的攻略吧! 大唐官府自身是物理输出类型的门派,所以我们在选择助战伙伴的时候就不需要过多的 ...

最新文章

  1. 厦门试点医疗大数据 产值有望达1200亿
  2. Bitcoin Unlimited发布BCH新版客户端1.5.0.0,包括CTOR和CDSV
  3. Elasticsearch 如何把SQL转换为DSL
  4. 无刷电机和有刷电机的详解区别
  5. 拓扑排序和关键路径课程设计
  6. 路径规划之DWA类算法简述
  7. turbo c语言教程,C语言基础教程(六)Turbo C 程序设计初步(1)
  8. SDNU 1210.通话记录
  9. windows10为何鼠标右键一点桌面就一直转圈?
  10. glibc 知:手册08:消息翻译
  11. vue+element树形控件实现根据条件(例id)禁用选项
  12. 2021教育企业邮箱怎么注册?如何申请学校邮箱?
  13. (模拟信号/数字信号)分别以(模拟信号/数字信号)中传输方式
  14. vue使用支付宝支付
  15. CFA1级 JC网课
  16. 测试点击屏幕次数的软件_变视读为聆听,解决老同志阅读困难的一款实用的文字转语音软件...
  17. i31115g4和r34300u哪个好
  18. 济南大学计算机专业就业前景好,计算机进入“十大热门专业”,未来缺口大,这3所大学值得报考...
  19. CSS3制作加载中loading动画效果
  20. Amazon SES介绍 - 如何通过SES发送邮件

热门文章

  1. java如何强制转换_如何实现JAVA类型的强制转换
  2. java neon_Eclipse Neon安装指导
  3. Windows 2008 R2、2012 R2 磁盘扩容、新加磁盘
  4. Homekit智能家居DIY设备一智能灯泡
  5. HDU-2660 Accepted Necklace
  6. 利用Python预测股票价格
  7. 【CodeForces 1255D --- Feeding Chicken】
  8. unity 调用Anidroid 相册 选取图片裁剪
  9. 苹果手机投影_会议室投影机最常用的一款无线投影解决方案,操作便捷,运行稳定且不需要装软件...
  10. google账户配置foxmail和使用foxmail