Nisy 发表于 2007-4-13 22:30:05

一种加密思路(待完善)

一种加密思路

软件次数限制或时间限制+KEY文件

1.软件次数限制或时间限制
软件第一次启动时候,向系统3个文件内写入软件的运行时间或次数
如:a.ini   b.dll   c.occ

软件每次启动都调用a.ini来判断软件是否过期
每次软件关闭的时候调用b.dll 来判断软件是否已经过期
如果调用d.ll时判断出软件已经过期,则向软件目录中某文件(现有C文件中写入一个加密后的数据)
软件再次启动时判断C保存过的数据,来判断是否调用软件是否过期和注册的窗口(在调用该窗口时,大家要思考如何不被暴破掉哦,代码要做很隐蔽)

c.occ文件这里该起作用了. 每次软件的异常关闭时想c.occ文件写入一个数值,当数值累加够5次后,软件就别想再启动了. 只有想作者求够专门的卸载工具进行卸载了~~

2.KEY文件
注册码32位,注册时仅判断前20位和后两位,若注册成功则向注册表保留该KEY的信息。(这里保存的只是个假象)
软件在退出时,将注册表中的KEY取21~30位进行加密处理,写入C文件中。
(只有当我们点击注册确认暗钮后,在这一次软件退出时才激活向C文件写入的函数)

当第一步注册成功后,软件显示已注册(是否显示已注册只判断注册表文件,而且每次软件启动时都判断注册表文件来判断是否注册)

软件在运行某功能时,调用C文件来判断是否注册成功。C文件是由KEY中那10位数字生成的一个加密数值,也可以是10位数,但是加密后再保存,计事本是休想打开的.
在判断这一部分时,也采取分3部分来验证,分别返回3个随机值,出现在不同的返回调用(如这个功能实现过程中的3个环节),只有3个随机数值之和为某一数值吻合时(这个其中的运算大家自由发挥),才能完整的实现该功能,否则软件自己关闭。

如第一个返回值如果是3或4或5则开始运行,第二个数值为随机,第三个数值先保存在内存的某处,在该功能运行一部分的时候调用该数值并做累加计算来判断三个数值的累加和来决定软件是否完整的运行该功能

壹只老虎 发表于 2007-4-13 22:45:27

支持下兄弟!

fonge 发表于 2007-4-13 23:59:02

写个demo出来~
用代码讨论,
光嘴上说有点难
修改demo代码来说明问题比较明了!

黑夜彩虹 发表于 2007-4-14 08:08:23

mark...

有空来试试~~

Nisy 发表于 2007-4-14 08:23:56

原帖由 fonge 于 2007-4-13 23:59 发表 https://www.chinapyg.com/images/common/back.gif
写个demo出来~
用代码讨论,
光嘴上说有点难
修改demo代码来说明问题比较明了!


/:03哦写不出来
第一部分的时间判断是根据一个密界一个高手写过的软件的加密思路而来, 稍做了简单的修改.只是一个思路.
第二部分有借鉴录象专家(不过这个思路是很早以前就思考过的,和录象专家的偶合确实有几分巧合),在暗桩的处理上要比录象专家更复杂.

其实大家对待暴破最好的方式就是使用暗桩技术

在关键的CALL上 采用不同的函数来调用他(或是做一个无关紧要的函数来调用) 在关键跳转那 只要你修改 我就让你显示注册成功, 但是我在程序启动前,让N个函数来调用这个CALL,用返回的数据来判断你是否修改过这里,如果修改过,我仍显示你已注册,所有的功能,只要你使用,软件就挂掉.

这里不采取一个函数来检测该CALL,原因就是如果是一处检测的话 NOP掉调用的CALL就可以 这里用N处,我让你再NOP 累死你~~

PS:再向所有文件中写入数据的时候全部使用加密保存 如Base64(Base64可逆,最好用不可逆的)等加密写入,一定要避免可以使用记事本打开,留下破绽

fonge 发表于 2007-4-14 11:15:43

列举了几个漏洞:
1。不管写到哪里,都要读取!
2。不管用多少个call,读取的都是同一串数据。
3。nop是爆破,如果不是nop而是分析其中一个有效call,那一串数据的用途就已明了。
4。数据存在的意义已被分析,OK,这串数据将会被仿制。

++++++++++++++++++++++++++++++++++++++++++++++++++++++
基于楼主方案补丁:
漏洞1,无意义。随你写到哪,写多少
漏洞2-3-4,不同的call调用不同的数据参与不同的运算。


其他继续补充中......

[ 本帖最后由 fonge 于 2007-4-14 11:17 编辑 ]

fonge 发表于 2007-4-14 11:24:59

更新:
1。在多处不定的地方写入不定的数据
2。调用时使用部分地方的不定数据参与运算,允许解开部分功能!循环,完美注册完成全部功能!

——————————————————————————————
如:
写入4处地方:
a1:457862145
a2:421ed2fw3e
a3:aerfcsd;leida
a4:baewldaldds
调用:
fun1(a1,a4,a1,a2):成功解开功能1
fun2(a2,a1,a4):成功解开功能2
......
依次类推~

黑夜彩虹 发表于 2007-4-14 13:55:08

原帖由 fonge 于 2007-4-14 11:24 发表 https://www.chinapyg.com/images/common/back.gif
更新:
1。在多处不定的地方写入不定的数据
2。调用时使用部分地方的不定数据参与运算,允许解开部分功能!循环,完美注册完成全部功能!

——————————————————————————————
...

这是不错一的种做法~~~

fonge 发表于 2007-4-14 18:34:03

疲劳战……/:12

fonge 发表于 2007-4-16 09:45:30

更新:

如:
写入4处地方:
a1:457862145
a2:421ed2fw3e
a3:aerfcsd;leida
a4:baewldaldds
调用:
fun1(a1,a4,a1,a2):成功解开功能1
fun2(a2,a1,a4):成功解开功能2
......
依次类推~
跟据功能X的特征进行判断,失败任一次,跳向试用版!
页: [1] 2 3
查看完整版本: 一种加密思路(待完善)