查看: 1067|回复: 14
|
如何制造一个会 expired 的软件
[复制链接]
|
|
有人有经验吗?弄一个有效日期的 (类似要register, buy 的软件)
我想了很久,用了个很笨的方法,就是把 installation 日期写进 registry. 然后每次开机就读取 registry value, 在更今天的日期比较,如果超过了指定期限,就不让他们继续用
可是这个方法太明显了,只要有人进到 registry 串改我的 installation 日期时间,基本上他们就可以无限的用我的软件了
请问,各位有什么更好的方法吗? |
|
|
|
|
|
|
|
发表于 28-12-2006 11:01 AM
|
显示全部楼层
首先呢,你的意圖是什麽?
比如你要做一個software 給人試用,然後又怕人不給錢,也就是給人有trial period,那就寫在exe裏面阿。 |
|
|
|
|
|
|
|
发表于 28-12-2006 03:13 PM
|
显示全部楼层
原帖由 biau_dart 于 28-12-2006 10:44 AM 发表
有人有经验吗?弄一个有效日期的 (类似要register, buy 的软件)
我想了很久,用了个很笨的方法,就是把 installation 日期写进 registry. 然后每次开机就读取 registry value, 在更今天的日期比较,如果超 ...
首先呢,可以做个GUID作为你的registry entry,然后呢吧日期换成达文西密码不就行咯 |
|
|
|
|
|
|
|
楼主 |
发表于 29-12-2006 09:01 AM
|
显示全部楼层
神仙,请问。。。。如何制作一个 GUID? 你的意思是说不要用我的 software 名字来做 registry entry,用 GUID?
chuah, 怎么说写在exe里?我想知道的是 logic,就是如何在30天后不让他们继续用 |
|
|
|
|
|
|
|
发表于 29-12-2006 09:44 AM
|
显示全部楼层
我公司的是用date 来compare, 这也是 最麻烦的,因不时要重新设定新从日期。要不然你就写在一个dat file,然后用stream reader 来读。 |
|
|
|
|
|
|
|
楼主 |
发表于 29-12-2006 10:12 AM
|
显示全部楼层
我现在也是用date compare, 可是如果 user 跑去改了今天的 system date (例如,2006-12-25 到期,他把时间改去2006-12-20),这样我们就让他多用5天了
还有,如果写在 data file, 用户也可以很容易的就开启那个 dat file 然后串该里面的 value.
我觉得神仙的建议不错,把日期 encoding起来,然后用 GUID,这样用户就不知道应该去registry里串该哪一个文档了。嘻嘻~
嗯……如果user 把时间倒退,又该怎么办呢?因为我看过一个别人写的program,我把时间倒退,他的软件居然知道,给了我一个error msg 说什么我更改了 system date, 然后就把软件关了。 真厉害!! ^-^a |
|
|
|
|
|
|
|
发表于 29-12-2006 12:16 PM
|
显示全部楼层
原帖由 biau_dart 于 29-12-2006 09:01 AM 发表
神仙,请问。。。。如何制作一个 GUID? 你的意思是说不要用我的 software 名字来做 registry entry,用 GUID?
chuah, 怎么说写在exe里?我想知道的是 logic,就是如何在30天后不让他们继续用
这个可以你可以随便打一组号码,只要你的软件认识它不就行咯 |
|
|
|
|
|
|
|
发表于 29-12-2006 12:47 PM
|
显示全部楼层
我以前写过一个,很麻烦,为了不要让他们改SYSTEM TIME 后可以继续使用...
因为我的APP要ACCESS 一个SERVER,所以我在那个APP第一次跑的时候就会UPDATE到SERVER 的DB里.
如此一来所使用的DATE COMPARE将是SERVER 的,即使他们改LOCAL 的SYSTEM TIME也不会有用. |
|
|
|
|
|
|
|
发表于 29-12-2006 03:28 PM
|
显示全部楼层
或者可以试看把那个记录日期时间的config file藏起来.. |
|
|
|
|
|
|
|
发表于 29-12-2006 03:41 PM
|
显示全部楼层
其實有很多方法啦,再與你怎樣運用而已。把事情弄得簡單點就不用那樣頭大了,這年頭,什麽都要簡單 |
|
|
|
|
|
|
|
楼主 |
发表于 30-12-2006 09:13 AM
|
显示全部楼层
okie~ 嘻嘻嘻,得到了很多的方法~ 哦,原来 c# 里面 内建了一个 generate GUID 的 method,就是 call System.GUID.newGUID()
嘻嘻,这个方法不错~ 而且也把日期弄成 davince code 了,哈哈~
突然觉得,程序编写员就像一个魔术师,要做的就是如何“欺骗”我的软件使用者,不让他们看出我的“伎俩”,呵呵呵~~
读到一些文章,他们说可以拿一些 system32 的 file,来看它们的 last access time (因为每次电脑启动一定要用到那些dll,所以他们的last access 应该就是今天的日期),这样就算他们把日期改了,也没有用 ^^v |
|
|
|
|
|
|
|
发表于 5-1-2007 08:53 PM
|
显示全部楼层
嗯……如果user 把时间倒退,又该怎么办呢?因为我看过一个别人写的program,我把时间倒退,他的软件居然知道,给了我一个error msg 说什么我更改了 system date, 然后就把软件关了。 真厉害!! ^-^a
如此這般:
1) 軟件安裝後,或者第一次執行時,將目前的電腦時間藏在某地方(比如registry或某文件)。
2) 軟件執行時,將上述的安裝時間和目前的電腦時間作個比較,就知道時間有無被改過。
读到一些文章,他们说可以拿一些 system32 的 file,来看它们的 last access time (因为每次电脑启动一定要用到那些dll,所以他们的last access 应该就是今天的日期),这样就算他们把日期改了,也没有用 ^^v
有些人爲了讓電腦更快,會將last access time這個功能關閉。
嘻嘻,这个方法不错~ 而且也把日期弄成 davince code 了,哈哈~
把日期加密後,最好放在一個不顯眼,看起來又很無辜的地方,或者不顯眼,但看來很複雜的地方,譬如:
HKCR\CLSID\{44858ABC-4803-3848-2138-4857BCDEF11}
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\...
文件的話,可以放在temp文件夾,和其它temporary file混在一起。
你也可以雙劍合壁,將日期同時存在registry和文件。一個不見,還有另一個擋著。 |
|
|
|
|
|
|
|
发表于 6-1-2007 10:38 AM
|
显示全部楼层
原帖由 ReyesChuah 于 28-12-2006 11:01 AM 发表
首先呢,你的意圖是什麽?
比如你要做一個software 給人試用,然後又怕人不給錢,也就是給人有trial period,那就寫在exe裏面阿。
我做了测试,开动中的软件不能用low level file open mode写回exe里,file access denied。 |
|
|
|
|
|
|
|
发表于 6-1-2007 01:11 PM
|
显示全部楼层
就算可以寫在exe裏,安裝過就得回原本的exe了。 |
|
|
|
|
|
|
|
发表于 6-1-2007 03:33 PM
|
显示全部楼层
如果顾客有得进入互联网, 每当软件开始运行, 连接到你的网络服务器检验.
必须清楚告诉他们这个限制(in License Agreement and Download/Installation Instruction)。这是给试验版本,最终版本不会有这个限制。
软件特点还可由服务器控制。如果不能连接服务器, 一些功能失效或完全不能使用。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|