• 关于软件保护的矛与盾


    这个世界,有矛就有盾,破解大师说:“Just a matter of time”,只不过是时间的问题而已。

    每个作者都不希望自己的产品给破解,丢了客户,少赚了钱。软件保护应运而生,有能力的作者,自己给自己的产品添加了保护,方法很多,最经典的是用户注册,用户注册按区域可分本地注册和在线/联机注册,按功能可分安装注册和使用注册。

    本地注册可再分:
    1、作者给用户名和注册码,用户填写;
    2、作者要求用户提供用户名,然后作者直接给一个许可文件,用户复制到指定目录便可;

    联机注册可再分:
    1、用户输入用户名和注册码,联机判断是否为黑名单,如果不是并且合法,则返回成功;
    2、在线激活,这是Office/Windows XP开始搞的新玩意,Adobe公司也学了。实际上跟联机注册没有什么区别,关键是自动化高了点。

    实际上,采用用户名和注册码这种做法比较多,导致了类似Serials这样的注册码大集合软件的出现,也衍生了大量的破解网站。

    但大家也担心用户注册会给crack掉(如通用的注册Key、时间限制处理、直接修改注册判断等等),所以内置了各种反破解的方法:如

    1、把关键字符串处理成不可阅读:这样那些依靠关键字来搜索破解入口的程序将难以实现其功能;
    2、多点/随机判断:玩的就是抓迷藏,让你逮住了a也逮不了b;
    3、伪装:写伪代码,让破解程序以为是判断入口;还有一种伪装就是把系统文件伪装成普通的Windows自带文件,让破解人无法识别是否为软件本身所有;
    5、CRC:给每个文件弄个“身份证”,文件任何一个字节改动,都会判断出来;
    6、内存中动态检测破解程序:程序从启动到关闭,始终检测是否有破解程序在运行,如果有,要么是关闭自己,要么是关闭破解程序;
    5、关键数据加密:如使用次数、时间等等的限制,必然会要一个地方存储,如注册表、系统目录等等,破解程序就算能找到存放的地方,也难以破解。加密算法很多,常见的有xor、rc4、Blowfish、DES、Gost、Skipjack、Twofish、TEA、MD5(单向)、SHA等等,位数越高,越难破解。

    如果作者不想那么辛苦,或者没有能力自己做,会选用保护程序,保护程序一般有以下几个功能:
    1、用户注册;
    2、时间、次数限制;
    3、黑名单(用户和注册码);
    4、版本过期;

    之前的那个帖子,提到的Exe保护,就能实现上述的功能,而且是开源的。

    有保护,也会有破解,我所接触的,是从DOS下就已经有破解这个东西了。

    实际上,我觉得,知识产权是应该保护的,作者的辛勤劳动是值得尊重的。但要加密,如果需要1天的时间,解密,可能就只需要1分钟。这是作者的悲哀吗?不是的,因为这只是一个事实。我认为,作者与其把过多的心思放到保护上,倒不如放到业务逻辑处理上。

    大家不是看见了Java如何容易给反编译?我自己就有破解Java的程序的源代码。连源代码能破解,那还有什么保护可言?.NET同理。

    大家或许会说,不是有混淆器吗?是的,但仍然能反编译,现在的反编译功能牛得很。我尝试用Reflector反编译Reflector本身,代码出来虽然比较多的跳转和数字变量,估计用了混淆器,但核心代码仍然可见。

    虽然我不鼓励大家搞开源,但我建议大家:多用心写代码吧!

    附件:之前提到的一些加密代码(vb6/vb.net)

  • 相关阅读:
    web端限时活动逻辑处理总结
    js 的一些知识 摘自http://img0.pconline.com.cn/Pc_intranet/1105/13/313647_7.pdf
    HTML实现简单计算器
    HTML打折计算价格
    实现多线程的同时复制(三个线程同时复制)
    利用多线程实现并发调用,实现一个存钱多人取钱函数
    用字符流实现每个文件夹中创建包含所有文件信息的readme.txt
    Java实现文件在某个目录的检索
    Java实现列出目录下所有文件和文件夹
    大华、海康、宇视、华为等厂家RTSP标准拉流地址
  • 原文地址:https://www.cnblogs.com/unruledboy/p/21967.html
Copyright © 2020-2023  润新知