首页
社区
课程
招聘
[求助]这种加密方法的软件破解是不是比开发整个软件还难?
发表于: 2006-8-30 08:47 16310

[求助]这种加密方法的软件破解是不是比开发整个软件还难?

2006-8-30 08:47
16310
收藏
免费 0
支持
分享
最新回复 (86)
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
51
但 50 楼的你还没正面回答 我 47 楼的两个问题

如果你的软件真的在有价值而没人能破的话,

那也为中国的加密压倒了老外而赢来了面子,我恭喜你

终于见到”高手“了,

并在次声明不会再做无谓的辩论,你厉害行了
2006-8-31 15:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
52
有什么意思,大家是来讨论问题的,51楼你却在这里冷讽别人.

按你这想法,以后有什么想法都别提了,反正老外还没想出来,所以这想法肯定就不可能实现,要不老外早实现了...
2006-8-31 15:30
0
雪    币: 313
活跃值: (440)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
53
我也不知道自己的理解有没有错误。
不过还是说几句,你的软件应该可以在正版用户的机器上很好的运行,你能保证在不同的机器上不能使用相同的注册码和用户名,那就说明对机器有判断点以及计算的地方,而我想这些都肯定表现在你程序里面的算法把,所以可以被patch,然后便完全模拟了在另外一台机器上的情况。这样软件是不是就是被复制了。

理解的不是很透彻,所以就这么写一点。
2006-8-31 18:12
0
雪    币: 211
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
54
to 楼猪,你的保护软件方法应该是:
软件运行需要一个中间值A,A的值和设备参数有关,A加上设备参数才可以驱动外围设备。
楼猪你现在就要保护这个A,所以软件不判断A是否正确,要驱动设备后的运行情况来人为判断。当然人不是判断A,而是判断设备是否正常。
而注册就需要提供设备参数,楼猪算出A值,A值转化为注册码的形式送出,软件根据注册码生成A值。

确实如果楼猪能成功写出软件,我相信一段时间内无人能破。因为破解者不知道A的值和设备参数的关系。

但是根据你对软件的描述,每次使用软件时非常繁锁(需要判断设备是否正常,专业人员不在怎么办?),而且出错机会高(不判断A是否正确,某种特殊原因A或设备参数改变怎么办?),我想也没多少人会去用。
这是一种典型的牺牲用户设备的性能和寿命来保护自己软件的方法,而不是楼猪所说的破解比开发还难。
任何事情只要过度都会适得其反,请楼猪考虑清楚。
2006-8-31 19:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
55
53楼,即使能在另一台电脑上运行,也要求相同的设备参数,而不同用户的安装的设备的实际参数不可能做到一样,因此另一用户是没法使用的。
2006-8-31 20:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
56
54楼,请你礼貌一点,软件只需注册一次,一次正确注册后以后使用都是正常的,只要不更换设备就不需更换注册码,不需要每次使用都注册,使用中不需要专业人士维护。
2006-8-31 20:53
0
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
57
最初由 lccracker 发布
楼主居然认为自己的程序不会用到跳转指令
无语中。。。。。。


最初由 caiyg 发布
37楼,程序中没有因为注册码正误而出现明显的跳转指令,即使程序中隐藏有,也不能修改,因为修改后将破坏系统的功能。


请明确说有还是没有跳转指令,
请注意,跳转指令没有隐藏不隐藏。

我期盼条件判断不出现跳转指令的奇迹出现,
我已经等了20年了。。。。
2006-8-31 20:58
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
58
57楼,实现程序的功能中有跳转指令
2006-8-31 21:19
0
雪    币: 313
活跃值: (440)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
59
为什么参数不可以一样呢,不明白,参数是基于什么的呢
2006-8-31 21:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
60
59楼,因为安放设备的大型构件是已经做好的,没有统一的标准,一个大型构件的造价要几百万元,不可能为软件更改构件型状、设备安装位置等,设备的种类、数量、安装位置不一样。
2006-8-31 22:05
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
61
看了你所说的加密方法,我有一些不太明白,望指点:
“我开发的是自动化软件,软件里每个用户要设置用户安装设备的参数”
  其它的问题先不说,这里我有一些不太明白,“软件里每个用户要设置用户安装设备的参数”说的是什么意思?你的意思是说,你发布了一个安装程序包?用户在安装时必须输入相关的安装设备的参数才能继续安装?不过到这里我就更不明白了,你要这些安装设备的参数有什么用吗?
  一、说是要用这些参数解密安装包吗?似乎不太可能。因为你在发布软件前不可能预先知道用户的设备参数是什么来为你发布的软件加密,除非你是先取得用户的设备参数,然后再用这些参数为你的程序加密,最后再将加密后的安装包发给用户,安装时再取得用户的设备参数来解密安装或运行(或许你要说的就是这个意思)。
  二、说是要用这些参数来加密安装包吗?有些可能,但是,这样一来,你的程序在安装的时候一定是未加密的,软件的加密是在安装时进行的。是在安装时用这些参数加密软件直到完成安装。当程序启动时再取用户的设备参数进行解密操作。如果我要破解你的软件,可以在你的安装包取参数加密之前下手,不让你加密,跳过你的加密函数。
  如果上面两条都不是,那你所说的意思应该是先取得用户的设备参数,然后再用这些参数为你的程序加密,最后再将加密后的安装包发给用户,再取得用户的设备参数来解密,这样一来,如果不是本机机器,程序是不可能解密成功的,也就没有比较跳转指令可以爆破了,你说的是这个意思吗?只有这样,比较符合你所说的加密方法。不错,如果你真的是这样的加密方法,要破你的软件的确是有点麻烦,但是也不是不可以破解,你上面说的,如果机器设备参数不正确,软件解密肯定不成功,也就不能运行了,是这样吧。但是,假如我提供这些参数给你,买到你的一个正版软件,我用我这台电脑参数买到的正版软件应该可以在我这台电脑上正常运行吧(不行那我也没话说了~_~)?如果可以正常运行,哪要破你这个软件似乎也就不难了,因为可以正常运行,说明你的软件正确解密后代码就存在于内存中,只要有正确的代码,还原这些代码只要有一些的技术,也不难吧?
没事干,上面所说都是乱弹的。
2006-8-31 22:33
0
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
62
关于加密强度如何如何的问题,到我这楼为止已经讨论很多了,我不打算再说什么特别的
我试图从另一个方面来说明问题, 如果楼主觉得离题请忽略这帖

首先是软件加密的意义, 问问楼主, 你的产品有没有竞争者? 如果没有, 那很好, 楼主可以进一步提高加密的强度, 就目前的情况来看, 这种加密方案是可行的, 而且强度很高, 要进一步提高强度, 建议不仅要用注册码反算设备参数, 而且要反算部分功能代码(用注册码解密得功能代码), 另外如果有条件, 可以考虑网络验证, 甚至可以考虑部分功能放在服务器上运行, 这样的话如果服务器不被攻破是不可能破解的.
不过,如果楼主有竞争对手, 建议加密强度不要太高, 能达到接近一个开发周期不被破解是最理想的选择, 例如, 楼主的软件如果是一年发布一个更新版的话, 保证前11个月不被破解, 到第12个月出了破解版, 不要过于惊慌, 因为下个月你的新版就发布了, 再配合一下打击盗版的活动(例如盗版优惠价换正版等), 可以迫使一部分盗版用户转向正版.这样也可以从竞争对手那边把用户争取过来.
一般认为,软件保护的意义在于保护著作权不被侵犯, 但再想想, 软件保护并不是为了保护著作权而保护著作权, 保护商业利益才是终极目标, 说得不好听一点就是为了money, 为了cash. 分析楼主的情况, 如果市场上只有楼主一家卖者, 那么如前所说, 应当尽量提高加密强度, 道理很容易理解; 如果有竞争对手, 那么还是谨慎为好, 因为此时的用户有多种选择, 一旦楼主提高加密强度, 甚至提高到不可破解的程度, 而此时竞争对手却出现了破解版的时候, 是对楼主最不利的, 会使一部分用户转而去使用竞争对手的产品(可能是盗版), 想想Windows的例子, 如果微软把加密做的很好以至于不可破解, Linux的厂商一定在偷笑, 发财的机会来了, 而微软则会失去很多用户. 事实上Windows并不是不可破解, 正是这部分破解的Windows, 加上Linux自身的某些因素, 使得PC操作系统市场上Linux一直无法和Windows抗衡.

最后总结一下"什么样的加密方法是安全的", 从以上分析可以知道, 衡量一个加密方案是不是安全的依据并不绝对, 并不是如楼主所说"破解比开发还难", 关键在于能否最大限度的保护自身的商业利益, 同时打击和排挤竞争对手

本人水平有限, 如有谬误恳请批评指正
2006-8-31 22:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
63
61楼,
“我开发的是自动化软件,软件里每个用户要设置用户安装设备的参数”
  “软件里每个用户要设置用户安装设备的参数”说的意思是,软件的功能要依据设置安装参数来实现。用户在安装时必须输入相关的安装设备的参数生成的注册码才能继续安装?
  我给用户软件前没有预先知道用户的设备参数,软件加密根据用户设备参数的变量,而不是特定值,按照你说的取得用户设备参数后再加密,那就100%安全了,不存在破解的问题,因为你那样是为一用户特定开发的软件,我的做法是在软件开发时就加密好,给用户使用时,取得用户的设备参数,为它注册。
 
2006-8-31 22:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
64
62楼,我这软件因工作环境所限,没法网络验证,只能是单机版的。
2006-8-31 22:55
0
雪    币: 158
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
65
嗯,太菜了,听不懂..
2006-8-31 23:01
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
66
一、软件的功能要依据设置安装参数来实现。用户在安装时必须输入相关的安装设备的参数生成的注册码才能继续安装?
  如果是这样,似乎你的程序里应该有一个判断语句,来判断注册码的对错,这样似乎又可以爆破了?又或者说,你的程序里不判断这个注册码的对错,直接用这个注册码来解密程序,如果注册码不正确,也就无法解密了,对吧?但这样似乎又不可能办得到。因为你已经说了,在安装之前不知道用户的设备参数,每一个用户输入的设备参数都不能预知,你又是如何利用这些用户输入的参数算出来可以解密你的程序的注册码来解密你的程序???难道你加密的程序有一千种、一万种的解密方法不成?
2006-8-31 23:02
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
67
最初由 caiyg 发布
61楼,
“我开发的是自动化软件,软件里每个用户要设置用户安装设备的参数”
  “软件里每个用户要设置用户安装设备的参数”说的意思是,软件的功能要依据设置安装参数来实现。用户在安装时必须输入相关的安装设备的参数生成的注册码才能继续安装?
  我给用户软件前没有预先知道用户的设备参数,软件加密根据用户设备参数的变量,而不是特定值,按照你说的取得用户设备参数后再加密,那就100%安全了,不存在破解的问题,因为你那样是为一用户特定开发的软件,我的做法是在软件开发时就加密好,给用户使用时,取得用户的设备参数,为它注册。
 


呵呵,还是要在跟一下贴:你这样一说,那不就是如现在流行的取机器参数而生成机器码一样吗,只是你没有列出来给用户见到,这样何来 100% 安全呢,请指教,还有你都说明了有跳转,那爆破为何不能成立呢,我可以把地址跳到你认为成功的地方,你认为呢
2006-8-31 23:04
0
雪    币: 1309
活跃值: (232)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
68
我发现楼主所说,用你软件的硬件是上千万价格的, 我觉得如果是这个水平的应用, 那么可想而知这套软硬件所产生的价值或者说重要性更是不得了. 软件本身的复杂性也是相当高的. 对于这样的软件, 我认为很少有笨蛋会用破解版本了,也不敢用了, 花一点钱买个正版软件也根本不在话下了.

  至于你这个软件加密方法倒是可以试着做做看, 强度也和具体实现的水平有关.

2006-8-31 23:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
69
66楼、67楼,注册码正确与否注册时不提示程序一样执行,但错误的注册码软件执行功能不正确,因为注册码的值参与软件功能计算,即使爆破后软件功能也就破坏了。
2006-8-31 23:33
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
70
你的注册码是参与软件功能计算的,那我倒很想知道,你的注册码到底有多少个?一个?还是上千个、上万个?(每一个用户都是惟一的一个),如果只有一个,那么是很好破解的,如果是每一个用户都是惟一的一个注册码,你的软件又是如何利用这些正确的注册码(是正确注册码)参与软件功能计算呢???前面我已经说了,莫非你的软件功能计算方法有一千种、一万种不成???实在不太明白。

其最后再说一下,就算是你所想的那样加密吧?假如我手里买到一个正常的注册码,有一个你的正版的软件,而且可以正常运行的,你想我还可不可能破的了你的软件,总不可能你的有正确注册码的正版软件都不能运行吧?但是,如果这个正确的注册码可以正常使用这个软件,那么就不难破解了。
2006-8-31 23:43
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
71
最初由 caiyg 发布
66楼、67楼,注册码正确与否注册时不提示程序一样执行,但错误的注册码软件执行功能不正确,因为注册码的值参与软件功能计算,即使爆破后软件功能也就破坏了。


我想你的想法是不可能实现的:

打 个 比喻
CMP AX,BX
JNE 004011B0   //不等就跳到 004011B0 处继续运行,但会出错
。。。。。。   // 上面不跳到这里正常运行
。。。。。。

当然你的看法不会这么简单,可能下面某处有 N 多自检,但很容易看的出爆破
是成立的,只是下面还要处理你的检测
2006-8-31 23:48
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
72
还有小虾斑竹说的,有一个正版软件的问题,我早在 29 楼的时候就提过了(补充一句,我认为没有破解不了的软件,只是看谁来破解,呵呵,好像我这样的菜鸟不行,但还有很多大虾呢)。
2006-8-31 23:53
0
雪    币: 184
活跃值: (108)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
73
我对自动化有点点改念,我实现一下你的想法,错误地方请指正:

自行车重量=a
注册码b=f1(a)
自行车载重量C=f2(b)  其中f2的公式和a有间接的关系.
自行车寿命D=f3(C)    为最终结果.   

那么,你本来想a千差万别,那么就直接导致b不同,最后C也就靠f2和a的隐含关系来造成破解B是无效的.D是流程下来的.这个最终结果D将和a b c都相关.

表面上看好象天衣无缝,其实破解了你的f2和a的隐含关系,就直接导致软件破解.
从算法的角度来说,你本来想利用自控的闭环反馈参数来实现你的控制,但由于参数的唯一性,并不能达到你所期望的,否则本身将给系统闭环参数造成不稳定性,其实一个简单的例子就是winrar的CRC加密,你并不能靠到最后来判定是否解码成功,你本来想利用winrar的方式来实现闭环的控制,思路还是可行的.重要的是你的a和f2之间的间接关系如果给推导出来,将直接造成破解.
2006-8-31 23:57
0
雪    币: 211
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
74
楼上的C和a应该在软件中不判断关系,由设备判断。

to楼主,可能是公司的电脑的输入法问题,无其他意思。
只要楼主能够把双方的利益理清就可以了。
2006-9-1 00:09
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
75
潜力贴,三年争辩不完
2006-9-1 00:15
0
游客
登录 | 注册 方可回帖
返回
//