客户端应用试用限制设计

1.概要

最近接到公司安排的任务给客户端设计一个“试用30天”的一个需求,其功能主要是为了防止客户拿到产品之后不支付尾款继续使用。众所周知靠纯软件想防“盗版”,“限制试用”等做法是行业难题。只要价值足够高一定有人会破解绕过你的所有防线达到免费试用的目的。那为什么还要写这篇文章呢,主要是为了给遇到同样问题的小伙伴提供一些"纸糊"的限制用户试用的思路,作为一个连接点的文章。

这里分享五种思路:

  • 时间限制

  • 次数限制

  • 加密软件

  • 加密狗

  • 策略胁迫

2.详细内容

2.1 时间限制

思路:该思路主要通过使用时间来限制,例如2022年1月1日 到 2022年1月31日之间可以使用。这个思路最大的漏洞就是本地时间,因为用户只要保证一直不连接网络然后修改本地时间即可,所以还是要稍微动下脑筋防止一下。

缺点:如果用户跟着去查注册表修改一样能绕过。

b01ceac339ddefc857fafd3dd2661684.png

2.2 试用次数限制

思路:主要通过使用次数来限制,默认给软件打开次数一个默认值例如100次。100次以后禁用所有功能。使用次数通过对称加密算法(MD5,RAS等等)加密之后存到本地sqlite或者某个文件中。

缺点:用户只需要copy存储介质备份一份即可,然后到期之后替换一下又可以使用了。不过可以把一些复杂的配置或让用户有一些配置成本的信息也存在这个文件里,也能增加一些绕过的成本。

3ce9dd29a7053e14fde738562ca539d7.png

2.3 加密软件

思路:通过第三方加密软件进行限制,能防住一部分普通用户。但是还是那句话价值够高会让你见识到什么是人外有人。

缺点:网上会有一些破解手段,破解成本没有想象的那么高。

Eziriz .NET Reactor(收费)

官网简介:https://www.eziriz.com/help/introduction/about/

ConfuserEx(开源)

官网简介:https://mkaring.github.io/ConfuserEx/

Dotfuscator(免费)

官网简介:https://docs.microsoft.com/zh-cn/visualstudio/ide/dotfuscator/?view=vs-2022

50db2f91d8fa57952a25f2f78bbc3084.png

2.4 加密狗

思路:这个方法相对于上面的安全级别相对要高一些毕竟是通过钱来构建壁垒,不过还是有被破解的风险。

缺点:还是会被一些手段比较高的玩家破解。当然也可以将加密软件和加密狗组合使用增加安全性。

8d9a687f9034e0825ef5e22a143d4938.png

2.5 策略胁迫

思路:制定一些策略,迫使用户必须联网才能使用客户端,然后通过一些“认证”,“激活”等手段来胁迫用户。

  • 每次打开客户端必须联网登录,拿到某个激活码或者认证才能继续使用客户端。当用户不联网拿不到关键信息时给予提示。如果每次都要登录拿到这些东西很麻烦的话,可以默认在打开客户端时默默做掉这件事情只要用户联网其实是无感知的。

缺点:获取关键认证信息的手段过于麻烦的话,会影响用户体验。或者某些产品是在野外或需要脱机使用或者网络状态较差的情况下。会让客户崩溃。

好了,大概五种思路分享给大家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283830.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开发工具之Spring Tool Suite】6、用Spring Tool Suite简化你的开发

如果你是一个喜欢用spring的人,你可能会在欣赏spring的强大功能外,对其各样的配置比较郁闷,尤其是相差较大的版本在配置文件方面会存在差异,当然你可以去花不少的时间去网上查找相关的资料,当你准备使用更高版本spring…

康威定律,作为架构师还不会灵活运用?

Soft skills are always hard than hard skills. 软技能比硬技能难。 老板听说最近流行“微服务”,问架构师咱们的系统要不要来一套?老板又听说最近流行“中台系统”,问架构师咱们要不要搞起来?其实,这些问题不用老板问…

使用onclick跳转到其他页面。使用button跳转到指定url

1. οnclick"javascript:window.location.hrefaa.htm" 2. οnclick"locationURL"3,。 οnclick"window.location.href?id11"转载于:https://www.cnblogs.com/wujixing/p/5856087.html

Avalonia Beta 1对WPF做了很多改进

\看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!\\\Avalonia将自己定义为“基于WPF(使用XAML、数据绑定以及lookless控件等)的跨平台.NET UI框架。”在第…

WebView2 通过 PuppeteerSharp 实现RPA获取壁纸 (案例版)

此案例是《.Net WebView2 项目,实现 嵌入 WEB 页面 Chromium内核》文的续集。主要是针对WebView2的一些微软自己封装的不熟悉的API,有一些人已经对 PuppeteerSharp很熟悉了,那么,直接用 PuppeteerSharp的话,那就降低了…

[转]2022 年 Java 行业分析报告

你好,我是看山。 前段时间介绍了从 Java8 到 Java17 每个版本比较有特点的新特性(收录在 从小工到专家的 Java 进阶之旅 专栏),今天看到 JRebel 发布了《2022 年 Java 发展趋势和分析》,于是借此分析一下 Java 行业的现…

Mysql 数据库学习笔记03 存储过程

一、存储过程:如下 通过 out 、inout 将结果输出,可以输出多个值。 * 调用存储过程: call 存储名称(参数1,参数2,...); 如指定参数不符合要求,返回 Empty Set * 查询存储过…

android 代码混淆模板

#指定代码的压缩级别 -optimizationpasses 5 #包明不混合大小写 -dontusemixedcaseclassnames #不去忽略非公共的库类 -dontskipnonpubliclibraryclasses#优化 不优化输入的类文件 -dontoptimize#预校验 -dontpreverify#混淆时是否记录日志 -verbose# 混淆时所采用的算法 -opt…

vue+vuecli+webapck2实现多页面应用

准备工作 在本地用vue-cli新建一个项目,首先安装vue-cil,命令: npm install -g vue-cli 新建一个vue项目,创建一个基于"webpack"的项目,项目名为vuedemo: vue init webpack vuedemo 这里有一个地方需要改一下&#xff0…

一文把Docker、Kubernetes搞懂:什么是Docker?什么是Kubernetes?Docker和Kubernetes有什么关系和区别?通俗解释Docker、Kubernetes

一、Docker解决的问题 1、统一标准 ● 应用构建 ○ Java、C、JavaScript——编程各异 ○ 打成软件包 ○ .exe(类似Windows,最终也只是生产exe执行) ○ 使用docker build … 打包成 镜像——这就类似于exe ● 应用分享 ○ 所有软件的镜像放到一…

Python-高阶函数

#encodingUTF-8import sys # 高阶函数高阶函数实际上是参数可接受函数的函数即参数为函数的函数 # map()map()接收两个参数,一个是函数,一个是序列,将此函数分别作用于该序列的每个元素,返回处理后的序列结果def c2(x): return x…

程序员双手飞快敲键盘的时候是在敲代码吗?

当你看到一个程序员的两只手在键盘上上下翻飞,行云流水的时候,多半不是在敲击代码大概率是在跟产品经理撕逼讨论需求另一种可能就是在跟测试打口水仗10%几率是在论坛码字摸鱼或者和人家开喷了。1%几率是在跟MM聊天可以手速飞快而不需要停下思考的代码&am…

erlang-17版本的编码方式

最近在腾讯云租了个云主机:镜像提供方:选择服务市场 :多语言环境(Centos 7.0 64位 Python Perl Ruby Erlang ) 他们集成软件安装的是erlang-17版本,我之前用erlang-16版本一直没遇到什么问题; 这…

几分钟上线一个网站 真是神器

1、ToolJet 简介 ToolJet 是一个开源的低代码框架,可以快速构建和部署内部工具,而无需工程团队付出太多努力。您可以连接到您的数据源,例如数据库(如 PostgreSQL、MongoDB、Elasticsearch 等)、API 端点(To…

翻译:用户变量(User-Defined Variable)(已提交到MariaDB官方手册)

本文为mariadb官方手册:User-Defined Variables的译文。 原文:https://mariadb.com/kb/en/user-defined-variables/我提交到MariaDB官方手册的译文:https://mariadb.com/kb/zh-cn/user-defined-variables/ 用户变量是指由用户创建&#xff0…

移植Python3到TQ2440(一)

平台 硬件:TQ2440 64MB内存 256MB NandFlashbootloader:U-Boot 2015.04kernel:linux-4.9Python: Python-3.6.0工具链:arm-none-linux-gnueabi-gcc 4.8.3概述 现在树莓派很火,在树莓派上面用户可以通过Python来控制板…

WinForm(六)组合布局属性

WinForm是基于控件的,不像codemark的架构,可以非常灵活的用mark来布局,它只能用控件布局属性和窗口控件来完成对UI的布局。容器控件有一组控件叫容器控件,对布局特别有作用,它们分别是:TableLayoutPanel&am…

Qt 网络编程

QT 网络编程 TCP 编程 模块引入 QT network 头文件 #include <QTcpServer> // TCP服务器端使用 #include <QTcpSocket> // TCP服务器和客户端都使用 编程流程 服务端 1&#xff09;实例化 QTcpServer 对象 -----------------------------> socket 2&#x…

HDU 5037 Frog(2014年北京网络赛 F 贪心)

开始就觉得有思路&#xff0c;结果越敲越麻烦。。。   题意很简单&#xff0c;就是说一个青蛙从0点跳到m点&#xff0c;最多可以跳l的长度&#xff0c;原有石头n个&#xff08;都仅表示一个点&#xff09;。但是可能跳不过去&#xff0c;所以你是上帝&#xff0c;可以随便在哪…

Kafka高性能高吞吐的原因总结

1、磁盘顺序读写 保证了消息的堆积 顺序读写 磁盘会预读,预读即在读取的起始地址连续读取多个页面&#xff0c;主要时间花费在了传输时间,而这个时间两种读写可以认为是一样的。 随机读写 因为数据没有在一起&#xff0c;将预读浪费掉了&#xff0c;需要多次寻道和旋…