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

14 篇文章 2 订阅
14 篇文章 1 订阅

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

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

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

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

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

  • 解压安装包

  • 解压出来的文件列表

  • 解压UI资源包

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

  • NSIS安装脚本暴露
  • 待安装文件列表暴露 虽然这也是我们将要安装的,但有一些特殊场景,我们可能有限的只释放部分文件的时候,就比较重要了
  • 安装包UI资源泄露

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

  • 防止安装包被解包,安装脚本被提取,逻辑暴露
  • 防止安装包UI资源被提取,保护UI资源安全

在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往往能让客户对所安装产品的印象更加深刻,更能体现出软件服务商在用户体验上的专注与用心! 希望我们的努力,能够让安装包制作再容易一点,再快乐一点!

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NSIS安装包制作教程 分为三个目录:基础,插件,脚本 NSIS System 插件 NSIS VPatch 3.1插件 NSIS InstallOptions 2 插件 NSIS Modern UI(新式用户界面)插件 NSIS的Modern UI插件 NSIS里特殊符号的表达方法 两组件互斥 NSIS 常用小问题合集 资源替换式的美化包制作方式代码 安装完毕后如何刷新文件关联 教你如何编程调用 NSIS 的插件 NSIS安装程序概要 实现 NSIS 自定义页面中的控件操作代码 如何使用NSIS实现多目录安装设置 如何用NSIS在加入注册表 用NSIS 制作自己的安装程序 bluewind 的 wmp9 nsis安装脚本 NSIS安装脚本简明教程 取得winamp的NSIS脚本的教程 迅雷5.7.3.389 AYU增强版的安装脚本 NSIS制作迅雷安装的脚本 迅雷5.7.2.371 DDR1.5版去广告版源代码说明 NSIS删除安装程序自身 帮助文件中关于静默安装的说明 NSIS实现静默安装的两种方法 nsis的附加任务代码 关于 NSIS 写入注册表的问题 少轻狂制作的Windows优化大师的安装脚本 aipc编写的nsis极点安装脚本 官方 NSIS 插件全集 全方位掌握NSIS的使用 NSIS语言里怎样安装一个.inf文件? 如果要关联某个文件给程序应该怎么做? 如何避免显示解压缩进度框? 关于检测操作系统的问题 在结束页面添加运行程序选项 NSIS的botton二选一如何实现? NSIS灵活应用用逻辑库 NSIS调用inf安装驱动后的卸载问题 NSIS的组件互斥代码 在NSIS中如何禁止一个组件组的父项的点击事件 关于打破 NSIS 的 8192 字节限制的更简单方法 NSIS 自定义页面结合组件选择安装 一个关于组件跟自定义页面的控制问题 如何把安装的卸载程序放到其他目录

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值