Lua整合工具 squish使用方法

article/2025/9/17 22:24:19

squish是一个开源的用于打包lua脚本的小工具,它的主要功能是将多个lua文件整合成一个文件,并在此基础上做压缩和混淆等处理,混淆和压缩后的代码可以直接被执行而不需要先做解压还原等操作。

它的github地址:https://github.com/LuaDist/squish

这个工具安装和使用都很方便,下载源代码后在目录内直接make就行,特别需要说明的是,这个东西目前对lua5.2的支持还不好,所以机器上需要装lua5.1版本才可以正常运行它。你可以运行make install将它安装到你的usr/local/bin目录。

安装完成后,我们就可以开始使用它了。

squish在运行时需要一个叫做squishy的配置文件来完成所有操作,在这个配置文件你最主要的需要告诉squish3件事情:

1.最终生成的打包文件的文件名和位置,使用“Output 文件位置”的格式指明;

2.所有你需要squish处理的lua文件的位置和对应的模块名,使用“Module 模块名 文件位置”格式指明。;

3.你lua文件中的入口文件,即main文件,使用“Main 文件位置”的格式来说明,特别需要说明的是,有些时候这个入口文件是可以省略的,这取决于你的lua文件的结构。

在这里我们以cocos2d-x-2.2.1 samples里的HelloLua为例。这个工程中一共有两个lua文件,一个叫hello.lua,一个是hello2.lua。我们知道这个hello.lua就是该程序的入口文件,在这里我们把我们打包后的文件其名为out.lua,于是,对于这两个文件,我们的squishy要这样写:

Output "./out.lua"
Module "hello2" "./hello2.lua"
Main "./hello.lua"

还有一点要说明,这个squishy文件实际上相当于一个标准的lua文件,所以在其中可以使用lua的“--”来做注释。

接下来我们就可以用squish来处理这些lua文件了。下面我讲一下squish的几个重要的参数。

squish后的第一个参数是给定squishy文件所在的目录,这个参数是可以省略的,如果省略,则squish会在它所在的目录寻找squishy文件。

squish提供一个种叫“Minify”的方式对lua文件进行压缩,具体是对lua源文件中的空格,折行,注释以及变量名做处理,达到缩减lua体积的效果,squish对minify提供了两种参数,--no-minify指定不做minify处理,--minify-level=level在对源文件做minify处理的基础上,指明minify的程度,这个程度分为:none,basic,default,full,squish是默认开启minify的。

squish用Uglify参数指定对lua源文件的混淆处理,squish默认是不开启混淆的,所以如果需要混淆则要加上--uglify这个参数,并使用--uglify-level=level来指定混淆的级别,关于squish混淆的具体原理有兴趣的可以看一下squish的官方说明,或者直接研究它的源代码,这里就不多说了:)

除了上面所说的参数,还可以添加--gzip,--compile等参数对打包好的lua文件做额外的zip,编译等操作,在这里也不具体讲了,有兴趣的朋友可以试试。

ok,说了这么多,现在让我实际运行命令吧。还是针对上面讲的例子,假设我们要发布最终的程序了,我们决定使用minify,并且level为full,并且对代码做full的uglify,我们只需要运行下面的命令:

./squish --minify-level=full --uglify --uglify-level=full

于是,最终整合缩减混淆过lua文件诞生了:

虽然有些代码还是可以认出来,但是已经达到了阻止人类轻易修改与辨识的混淆程度。

我们再把uglify去掉看看结果,运行:

./squish --minify-level=full

区别还是很大吧:)

以上就是squish这个工具的大概用法和例子了,如果结合一些简单的bash脚本,可以实现更加强大的功能。

转载自 www.haogongju.net/art/2559787  感谢作者的辛勤劳动!

[注意事项] 自己在使用该工具时遇到的需要注意的问题

1.lua版本必须是5.2以下版本,文章中说过5.2以上整合的不好!如果作者后续完善该工具,则另论!

2.混淆级别 --uglify  --uglify-level=full  设置为full时,处理后的lua文件,在实际项目调用中无法识别!具体原因不明!在公司的项目里我采用的是default级别的混淆,使用后没有问题。

3.文章中建议配合使用其它工具使用。我在项目中配合cocos2dx自带工具luajit ,对lua文件进行处理后,能够起到加密作用!效果不错!


http://chatgpt.dhexx.cn/article/5ArwvCAL.shtml

相关文章

测试资深人士推荐的GUI跨平台自动化测试工具

Squish GUI 测试自动化工具使跨平台测试应用程序变得容易,它对Qt的支持非常好。 在发布应用程序之前测试用户界面比以往任何时候都更加重要,当今用户需要从移动、桌面、Web和嵌入式应用程序中获得无缝的跨平台体验。由于应用程序经常在工厂、汽车甚至厨…

难道真的有人因为要分享squish测试工具而去学习QT吗

1下载安装 1.去官网下载QT工具并安装,下载地址:https://download.qt.io/official_releases/qt/ ;如下图选择自己想要下载的版本,我下载的5.12.12,文件3.7G,如图注册完成,全选完成,后…

UCSC 基因组浏览器配置详解

一、配置参数 UCSC基因组浏览器:传送门 1、点击配置 2、进入配置页面: 点击刚刚运行的文件 BedGraph Format 2、轨迹配置页面 Type of graph :默认以bar,条形图来显示,选择point会以点或线来显示Track height &…

Squish — 基于Qt的HMI自动化测试工具

目录 自动化测试方案设置Squish记录测试属性验证视觉验证总结 本文翻译自Squish - Test automation tool for our HMI build with Qt 原文作者:Piotr Lesiecki 校审:Kenny Zhang 当测试工程师们听到自动化测试时,首先会想到的一定是Selenium…

Squish - GUI Tester

Squish - GUI Tester Squish overview 网上查询关于自动化测试工具Squish的资料很少。特别是中文搜索。最近正好在使用这款工具,在使用中总结了一些知识,在这里和大家一起分享下。 Squish是froglogic公司的一款商业自动化工具,几年前好像是…

Squish for Qt:为Qt应用量身打造的自动化测试工具

转载地址:https://mp.weixin.qq.com/s?__bizMzI5MzA3NzU3OA&mid2649661399&idx1&sn7b584cfc54e529d6ce605274d8f7bc0b&chksmf46da8f2c31a21e4eccfe9ee0eb690045cdd8a074af0e57bceb8f605c5fcb2fb72c9d7334c28&mpshare1&scene1&srcid072…

基于GUI测试工具Squish的使用

转载自:http://www.readingday.cn/squish-for-qt-2/ 申请Squish试用 浏览器打开Squish官网(https://www.froglogic.com/squish/free-trial/),填写试用申请表。您需要提供一个有效的邮箱地址,以便接收到Squish官方所发送…

浅析如何利用Squish实行 GUI自动化测试

1.引言 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的系统操作用户界面。是软件与用户进行交互的主要方式,与早期计算机使用的命令行界面相比,图形界面对于用户…

关于Squish的介绍和简单使用说明

网络研讨会 | Squish for Qt: 为Qt应用量身打造的自动化测试工具_哔哩哔哩_bilibiliSquish是一款跨平台、支持多种开发技术的GUI自动化测试工具,基于对象识别的GUI自动化测试工具、支持各类操作系统、可为多种技术开发的应用程序提供GUI自动化测试。操作简单、脚本语…

3乘3魔方第四步_三阶魔方第四步

三阶魔方的第四步是顶棱翻色,首先转出黄色的顶层十字,将魔方顺时针旋转九十度,转到红色的一面,右边顺时针旋转九十度,将底层的白色面转动到上面,顶层再顺时针旋转九十度,右侧逆时针旋转九十度&a…

java还原三阶魔方_魔方小站四阶魔方教程2 一看就懂的魔方教程(魔方玩法视频教程+还原公式一步一步图解+3D动画)...

形成下图的样子, 这一步很简单,只需要学会一个很好理解的技术就行了,请看下面标准情况的例子,魔方 您可以用鼠标拖拽3D动画里的整个魔方,以看到魔方背面的变化。 TR U R U 我们要合并位于前面的这一对红白棱块 合并棱块。 将合并好的一对红白棱块转到右面。 旋转右面,你要…

魔方cfop公式软件_【番外篇】八大魔方快速还原法图解介绍汇总大全!

本篇在上一篇文章的基础上,主要介绍目前魔方圈主流的速拧还原解法。 本篇文章仅介绍主流的快速还原法即 速拧解法,不包括其他初级玩法等,初级玩法也很多(笑面虎、8355、棱先、角先等等),甚至有些独立还原者能创造属于自己的解法,有些解法思路巧妙,有些解法容易上手,总…

二阶魔方还原 - 4步2公式

三阶魔方的公式记录在 https://blog.csdn.net/Bob__yuan/article/details/86546920,这是只需要记7个公式就可以三阶魔方还原法,本文为二阶魔方“傻瓜还原法”,即不需要另外再记公式,只需要会上述三阶魔方中的2个公式就可以还原的方…

UTF-8转码GBK

昨天一个大学的同学问了一个关于utf-8转码gbk的问题,所以两个人一起讨论了一下关于utf-8转码成为GBK的乱码原因。 正常情况下如果我们需要将UTF-8格式转码为GBK,我们会需要经过这样一个中转: 通常情况下如果直接转码会出现一种情况就是GBK转码…

python常用英语词汇(持续更新)

✅作者简介:大家好我是hacker707,大家可以叫我hacker 📃个人主页:hacker707的csdn博客 🔥系列专栏:python 💬推荐一款模拟面试、刷题神器👉点击跳转进入网站 一直有人问我,自己英语不…

Python常用英文单词【最强总结】

嗨嗨,我是小圆,总有人在刚了解到python的时候,会考虑一个问题 英语不好能学好python吗? 当然可以,学习python用到的单词并不是很多。 今天就给大家分享一下Python常用英文单词。 一、交互式环境与print输出 1、pr…

史上最全python常用英语单词,建议收藏

于刚才是学习python这些也足够了,一天学个六七个单词记一下在配合自己寻找的视频、书籍等等方法去学习是有一定帮助的。 这里还是要说一句,仅供兴趣爱好学习使用,个人开发者(非考虑未来靠此为生的人士)我们一起学习,一起成长。 下列常用单词大家可以复制一下,自己用Word…

【web项目部署】

一: 搭建 Java 部署环境 1: 安装 JDK 2: 安装 Tomcat 总结 3: 安装 MySQL (1): 依次安装 (2): 更改配置 (3): 启动 (4): 测试连接 二: 部署 web 项目 1: 给服务器准备好依赖的数据 2: 微调我们的 Java 代码 3: 重新打包 4: 上传到服务器上 5: 验证 ——————————————…

Web项目基本结构

C/S模式的软件 客户端/服务器 比如QQ,或者一些大型游戏 用户需要先下载软件的客户端,然后才可以使用. B/S模式的软件 浏览器/服务器 我们上网时候所访问网站的基本全是B/S模式的项目. 用户不需要下载任何东西,只需要用到浏览器就可以访问到这个项目. 我们在java中要学习的web项…

web编程项目

web编程项目 一 项目要求 二 项目实现 该项目使用了以下模块: express-session:是express中的一个处理session的中间件。有以下特点:session管理(基本功能),cookie签名,可替换持久储存模块。 在app.js中,设置session的各个参数。…