软件加密的解决方案!!!!!!!!!!!!(100分)

  • 主题发起人 supershan
  • 开始时间
to bluely, 我们需要先明确一个观点: 所谓crack就是破坏软件的用户校验, 使非法用户
也能完全使用软件的功能. 所以, 对合法用户使用软件不考虑在内, 至于一份合法软件
允许多少copy同时运行那是另外一个话题, 我们不把它归入防crack的范畴.
基于上述观点, 可否请您说出一个我软件运行时必须一次把所有加密部分全部解密后
才让用户使用的理由? 您注意到我上次的回答了吗? 密匙并不是放在软件代码中. 而
是执行程序前让用户输入的(或者由安装程序写入注册表或磁盘文件), 这样至少要有
一个合法的许可才能执行这个软件, 而程序的解密并不是一次全部解干净, 而是用到
的部分再临时解密, 并且几段加密代码可以解密到同一内存空间再运行(保证第二次解
密后的代码覆盖掉第一次解密后的目前不使用的代码).
只要在每次需要解密时临时到注册表或磁盘文件中读取密匙,这样即使将运行时的内
存直接读出来保存成执行文件也没用. 在没有密码时一样无法执行下去.
至于保证软件只能有一个合法用户输入正确密码并使用的话, 那就是另一个话题了.
上述方法实现起来可能比较困难, 但决非不可能做到(至少在DOS下实现起来很容易).
 
关键是软件还要防拷贝,也就是拷到另一台机器上就不能用,即使知道正确的密码。
否则一旦密码流传开来软件就失去加密的意义了。
所以还是硬件加密好一些。
关于软件的加密问题值得深入讨论。
 
没有不可能破译的密码,还是不要在这方面花时间,还是把时间用在作程序和开发帮助文档上吧!
 
硬件加密是好,但如果客户花几十万买一套你的软件,只能在一台机上用,
如果他的硬盘或CPU,那他几十万的软件不是也用不了了?
这不是害惨了客户?
 
对资源加密。(有谁能轻易的解开ZIP的密码呢?)
对你软件中所需应用到的资源如图片、路径、字符串等应用一种
加密算法(最好自定义,而且是不可逆的)和一个较长的密钥(至少64位)
进行加密。
软件在运行时从系统的硬件信息中(CPU、内存、硬盘、CMOS)得到一
个用户序列号。让用户把这个序列号通过某种途径告诉你。你用这个用户号
与你的加密密钥通过加密算法得到一个注册号。把这个注册号告诉用户。
软件把这个注册号写到注册表中,运行时利用序列号和注册号得到解密
密钥,把资源正确的解密,加载到内存中。没有正确的资源,软件咋可能正
常运行呢!(资源最好随机读取,以避免被截获。)
这种方法应该十分有效(如果你的用户不反对的话),如果资源大一些、
密钥长一些、算法复杂一些、资源的读取灵活一些、序列号的获取可靠一些,
要破解决非一朝一夕的事。
——给点儿分吧!
 
我用的方法同jazzfan所说。
但我只是做了很简单的限制,甚至不用专业的人员专业的工具也能搞定。
我觉得没有必要做过多的工作,不管你投入多少,设计得多巧妙别人要破,也是不难的,
甚至不要什么蛮多功夫,但我想等我的东西有人来crack的时候,至少说明了一点我的东西还
有点价值,我会很高兴的。
我可以把放在花大量的时间来设计加密算法的时间放在优化我的东西上,等别人crack的时候我
的新版本也许功能要强大得多。
 
sonie说得好,真正的程序员是不屑于加密的。
最高境界是让用户完全自觉的把钱掏出来。
你好意思买D版的WPS吗?
 
我有以下几种方案:
1、网卡+主板+CPU id号再密+IP地址。
2、硬盘容量+WINDOWS序列号+WINDOWSID号+WINDOWS注册用户名
3、硬盘卷标+硬盘序列号+主板ID+BIOS序列号
以上几种可自由配合,生成注册码,区分操作系统、区分硬件、区分网络节点,相当有效。
 
to bluely
留下你的email,我发给你一程序,请你解密!!
 
to bluely
my email:jiantaoshao@elong.com
 
bluely@netease.com
 
1、用网络加密技术,软件安装运行的时候需要用户注册,在网络上创建读取信息,
2、用硬件加密比较安全
3、利用光盘加密
 
<<< 关于读 CPU ID 和主板 BIOS 等信息加密软件 >>>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Do{
读主板信息:
主板名称: String(PChar(Ptr($FE061)));
版权: String(PChar(Ptr($FE091)));
日期: String(PChar(Ptr($FFFF5)));
序列号: String(PChar(Ptr($FEC71)));
* 这些语句在同一批主板上读出的信息是相同的!
* 在 Win2000 以上版本下运行(编译)无法通过!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* 读 CPU ID:不是所有的 CPU 都有序列号,而且同一型号的 CPU ID 相同!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*读硬盘序列号:有些硬盘没有序列号,或无法正确读取(人为或系统等因素造成)。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
读网卡序列号:局限性太大,且序列号可以用一种很简单的办法修改(改注册表)。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
读用户名或计算机名:局限性太大,在大型网吧等场合不适用(改名后注册码不可用)!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
读其它能在注册表能找到的数据:太不保险,极不安全!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
使用注册名+用户名:注册太灵活,只要注册一套即可通用。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
再就是注册后的信息保存在何处??????很不简单,问题多多!!!!!
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}Loop
呵呵:)请继续讨论此技术问题。。。。。。。限入死循环!!!!!!!!!!!!!
******************************************************************************
据我测试发现,此软件(V8.45以上)在同型号机器(网吧),特别是主板牌子型号相同、
硬盘相同(不论是否有无序列号)、CPU 相同,系统为克隆的,且能在Windows的任何版本
(98/2K)等情况下正常运行,每台机器都能读取到唯一且固定的序列号!!!实现了真正
的一机一码~~~~~~*请大家好好研究、学习美萍软件(它自称读主板信息加密的)!!!

OK.......Windows 95/98/SE/ME/NT/2K/XP...启动中>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 
这几天正为这事头疼,
想这样做:
1:程序运行时到网上读一段执行代码
 注意不是加密验证信息之类的,是执行代码!,每次读取的都不一样,读入后放在内存中
加一个令环牌机制,以使每一次读取的代码都不能重复使用,可以防止内存复制
2: if 没读到代码 then 退出
3:执行该代码。


大家讨论讨论。看是否可行。
 
谁能解开cuteftp pro2 beta2? 多谢了!
 
各位
谁有C++Builder的字符串加密例子,急用,DELPHI的不用了,因为已经有DELPHI的了,但怎也
转不到C++Builder,如果谁有C++Builder的请寄:drroc@21cn.com
或贴:http://www.delphibbs.com/delphibbs/dispq.asp?lid=759801
即发分
 
加密只防君子不防小人
 
看看人家是怎么解密的再去研究怎么给它加密吧.
www.pediy.com
 
没有这么复杂吧,做点简单的加密就可以了!有人盗版说明你的软件好,
而且正好为你做广告呢!微软不就是一个活例子吗?
 
加密!加密!加密!
对企业的用户,一般加密即可了,
我甚至不加密,固定单位名称不就结了。
如果是做共享软件,
你现在提这个问题,说明你的系统还
不见得很好,免费测试吧!
 
顶部