假设有一个程序,是以卖序列号的方式盈利的,每个序列号可以装在5台电脑上。
每次安装的时候,输入序列号之后,安装程序会发一个请求到某个服务器地址,请求中会包含序列号,
如果服务器验证序列号通过的话,就会给剩余可安装次数减一,并返回一个验证通过的标记,安装包程序接收到这个
标记之后才会继续安装,如果返回的是验证失败的标记的话,则安装包程序退出,安装失败。
相应的,在一台电脑上卸载这个程序的时候,安装包程序也会自动发一个请求到服务器,服务器验证通过的话会给可安装次数加一。现在就面临一个问题,假设某个用户在卸载的时候用某个http监视工具获取到了请求地址,那么他就可以在装满五次之后执行
这个请求来冒充卸载的过程,这样这个序列号就又可以装在别的机子上了。如何防止用户模拟卸载呢?
每次安装的时候,输入序列号之后,安装程序会发一个请求到某个服务器地址,请求中会包含序列号,
如果服务器验证序列号通过的话,就会给剩余可安装次数减一,并返回一个验证通过的标记,安装包程序接收到这个
标记之后才会继续安装,如果返回的是验证失败的标记的话,则安装包程序退出,安装失败。
相应的,在一台电脑上卸载这个程序的时候,安装包程序也会自动发一个请求到服务器,服务器验证通过的话会给可安装次数加一。现在就面临一个问题,假设某个用户在卸载的时候用某个http监视工具获取到了请求地址,那么他就可以在装满五次之后执行
这个请求来冒充卸载的过程,这样这个序列号就又可以装在别的机子上了。如何防止用户模拟卸载呢?
解决方案 »
- C#操作Excel指令SaveCopyAs出现问题
- 使用FileInfo的delete时,总报The process cannot access,because it is being used fileinfo
- treeview绑定数据库
- 如何在同一幅图片中写不同的字?
- vb中的Windows.Forms.MouseButtons.Left这个在c#用什么表示?
- 焦点问题.
- c# 数据库问题
- 急!表单中动态生成控件的问题,请高手解决,高分送上!
- 多线程和数据库问题?
- 100分求教从数据库中读取图片的方法
- 工具栏经常点击了没响应,需要重复点
- Socket问题,提示您的主机中的软件中止了一个已建立的连接
(机器码: 12345 安装随机码:123) ->加密方式1:*****卸载:
卸载程序判定卸载成功后:
(机器码: 12345 安装随机码:123) ->加密方式2:*****
不好意思,没太看明白您的回帖。我之前是这个意思:
加密的过程是安装包调用托管程序集进行的,即使混淆过还是可以被人看出个眉目。
假设我有一个序列号已经在五台机子上装过了,想要模拟卸载其中一台,我只需要反编译一下安装包调用的程序集,获取里面请求的url地址和加密方式,就可以模拟一个卸载过程了。
然后我的这个序列号就可以在第六台机子上用了。
我的意思不是说客户可以重复利用抓到的包,而是可以伪造包。
假设我有一个序列号,我已经装过限定次数了,现在我卸载其中一个,截获url,大概搞清楚url的构造方式,然后根据这一个截获到的包再伪造四个包来假冒另外四台机器的卸载过程。
如果这个假冒过程成功了,客户现在就又有5次安装权限了,他可以再装五台,这么一来,一个序列号就装了九台(除去最开始做实验牺牲的一台)。
当客户确定卸载,发回这个token后,就把留底在服务端的那份token给灭了。 给它+1.
要是这个token被用第二次的时候,服务端又没有留底,token里的日期又不对,
那就拒绝请求。
http://www.chenjiliang.com/Article/View.aspx?ArticleID=19108
怕的是客户构造出一个冒牌的token来。
不知道LZ做的是啥,我只知道貌似目前国内没有用付费软件的习惯...
LZ倒是可以通过提高装几率,增加附加值...例如TX的QQ...唔...