五千年(敝帚自珍)

主题:【原创】侃侃高清晰电视的数字内容保护 -- ragtime

共:💬18 🌺53
全看分页树展 · 主题 跟帖
家园 【原创】软件反盗版措施极浅谈

嗯, 老实说, 其实开发反盗版措施跟软件本身的开发是有矛盾的. 写软件的同学们光是开发软件本身就已经焦头烂额了, 还要搞反盗版, 很辛苦的. 如果反盗版反得正版用户出问题, 那对谁都没好处. 对用户来说, 反盗版措施对他一点用处也没有, 只是增加了他的购买成本跟维护费用. 搞得太贵太麻烦, 没有人会高兴的.

软件技术上反盗版的措施, 无非是加密, 序列号, 软件狗, 硬件指纹, 网络验证之类的做法. 具体实现的代码, 可以是开发商自己研究的, 也可以是向专门的反盗版技术商买. 下面, 我就凭自己看来的一点点东西, 把这些做法的弱点和破解的大致方向讲一讲. 欢迎大家拍砖.

加密的话, 基本的办法是把可执行文件加密让破解者无法反编译分析代码, 或者需要输入密码才能正确解开. 当然这样做也挡不住破解者, 因为正版总是要正常运行的, 只要等到程序自己解开密码准备运行的时候, 把内存里的代码弄下来就行了. 前面的加密解密步骤可以跳过.

序列号是用的比较多的一类办法. 基本的思路是让用户输入一个序列号, 程序经过一番计算之后判断是否正确, 然后决定是否运行. 再高级一点的, 会采集电脑本身的一些信息加入序列号的运算. 比方很多程序安装后会给出一个安装号, 拿着这个安装号到软件商那里买正版, 软件商再给你一个序列号, 就可以让软件只在一台电脑上运行. 这个办法的弱点是, 程序中必须有一段代码是对序列号进行验证的. 破解者通过分析验证代码得知验证的方法, 反推回去就知道怎么产生序列号了. 比较先进一些的办法是采用DES, 椭圆曲线一类的加密很容易反推很难的办法, 让破解者即使知道验证算法也很难反推回序列号. 象flexlm这样的专业license也是靠这个吃饭的.不过随着破解技术的发展, 象椭圆曲线这样的也有办法反推了. 经典的例子比方XP的序列号就是这样被算出来的.

软件狗是行业软件比较常用的办法, 就是一个硬件插卡放在电脑的并口或者USB口上, 软件运行时去访问一下这个硬件就知道是不是正版了. 对付软件狗的好办法似乎不多, 只能是用软件方法模拟硬件, 或者干脆把程序里验证的代码跳过. 后者往往还容易一些, 因为开发商本身不一定有心思把自己的代码搞得很繁琐.

硬件指纹的办法其实跟软件狗有一点点象, 基本的思路是在硬盘光盘上一些平常不会访问到的地方放一点数据作为指纹, 到时候就去读一下. 如果是盗版的话就没有这些指纹. 在软盘光盘这类移动介质上还可以做一些手脚, 比方把某个存储点破坏, 这样每次读正版盘读到的结果都是随机的, 而盗版就不会. 现在很多游戏似乎都是采取这种方法.破解的办法还是要从程序的验证代码下手, 把验证的部分去掉或者是蒙骗过去就好了.

网络验证是比较厉害的一招. 每次软件连到软件商的网站时, 软件就向软件商报告自己的序列号, 软件商可以查证, 然后告诉软件是否继续运行. 比方XP的升级验证就是这样, 发现是盗版就不给升级. 解决的办法, 除了对付验证代码以外, 也可以从序列号下手, 搞出软件商也分不出真假的序列号. 再有, 就是搞私服, 干脆不要序列号. 比如免序列号的反恐精英对战服务器就是一例.

各种反盗版的办法都是有弱点的, 而且也不会特别复杂. 因为搞得太麻烦合法用户不买帐, 最后还是搬起石头砸自己的脚. 又因为用户的需求和运行环境不一样, 软件往往要提供多种授权方式. 这样一来, 只要有一种方法可以破解, 整个软件就被破解了. 总之, 反盗版这东西是道高一尺魔高一丈. 靠技术防是防不住的, 靠法律威慑, 靠完善的售后服务体系才是真正的解决办法.

元宝推荐:四月一日,
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河