当前位置:主页 > 公司动态 >

安装包UI美化之路-安装包防解包与资源保护

浏览记录: 170次日期:2022-12-12

众所周知,原生的NSIS打包出来的安装包,是可以轻松的被7z解压的,待安装文件以及NSIS脚本、插件、甚至UI资源包全部都可以一览无余;虽然解压出来的脚本可读性不是很强,但完全不影响分析安装过程的逻辑,甚至有部分脚本可以直接复制出来使用!

我们网站的第一个示例,因为在这方面没有做特殊处理,也是可以被如此解压的。

想想自己或者公司团队花了很多时间精心设计安装界面,被别人轻松提取,用在他处,是不是很痛心呢?

研发人员,加班熬夜在安装包中做了一些控制逻辑,本想限制一下安装行为,但被解压后,脚本逻辑完全暴露在他人面前,是不是感觉有点自欺欺人?

以下是解包普通NSIS安装包的过程:

可以看到,插件和NSIS脚本都被解压了出来,整体来说有如下问题:

我也因为这个而被困扰多时,好在现在已经找到了解决方案,其实我们要解决的有两个问题:

在nsNiuniuSkin的安装包打包解决方案中,我们对NSIS的压缩方式进行了调整,避免了被7z的解压,同时我们对UI资源包进行了高强度的加密,以确保安装包资源的整体安全。

接下来看看我们的新版本是如何解决相关问题,同时来看看新版本打出来的安装包是否真的安全吧!

防解包

这个比较简单,我们应用了新版本的增强型NSIS脚本编译器,能够调整打包后的exe的压缩方式,使得7z无法识别具体的压缩算法,自然也就无法解压了。 以下以我们的nsNiuniuSkin界面在线设计引擎的安装包为例,来看看是否真的能够防止被解包:

安装包UI资源保护

为什么要把这个单独提出来说呢? 原因是因为NSIS安装包程序,在启动的时候,会自动在系统的%tmp%目录下创建一个临时目录,其中存放了安装包用到的插件;同时,我们nsNiuniuSkin的安装包方案中,也会将安装过程中用到的许可协议和UI资源包存放到这个临时目录中。

这样一来,如果在打开安装包程序后,到%tmp%目录下,就能看到安装包使用过程中所依赖的插件和资源了。

以下是我们nsNiuniuSkin界面在线设计引擎的安装包启动时的临时目录下的文件列表:

可以看到一个名为skin.zip文件,这个其实就是我们用来存放安装包图片和界面配置脚本的资源包;你可能要问了,这不是已经暴露了么?

别急,试着解压一下,你会发现无法解压:

高强度密码保护:

这是由于我们在打包的时候,针对生成的zip包进行了密码加密,同时在安装包启动时,在内存中解密资源包,然后提取资源来进行渲染显示;同时,我们使用的密码是每次打包时随机生成的uuid作为密码,在NSIS脚本本身安全的前提下,坦率地讲,我自己也不知道这个安装包的资源包要如何解密出来。

说起来也是有点尴尬,自己的打包,居然自己都解不出来;不过,既然要追求安全,我觉得这个就应该如此!

加密的逻辑并不会对安装包的运行性能有任何影响,您也可以直接下载体验一下。如果您感兴趣,可以帮忙试着解压提取下,顺便给我反馈一下还有哪些不足,我好改进!

http://www.leeqia.com/download/NSNiuniuSKin_DuiDesigner_Setup.exe

后记

在安装包的制作和应用中,其功能性与美观当然是第一位的,但安全性也是一个不可忽视的点,如果您刚好对安装包的安全性有要求,然后刚好看到了这一篇文章,咱们的故事就开始了!

结语

在安装包安装过程中,精美的UI往往能让客户对所安装产品的印象更加深刻,更能体现出软件服务商在用户体验上的专注与用心! 希望我们的努力,能够让安装包制作再容易一点,再快乐一点!

愿天下没有难做的安装包!

Copyright © 2015 - 2023 深圳市利洽科技有限公司 All Rights Reserved 粤ICP备15043258号-2