关于一个Java程序软件保护的问题,请各位指点指点~
wugng 2004-01-06 11:11:58 最近在要做一个Java程序软件保护,初步有以下想法,请大家看看有什么不足
大致上流程如下:
1, 首先提供一个小工具给用户取得用户机的唯一信息,然后用户需要将此信息返回给我
2. 使用此唯一信息生成用户License,并返回给用户
3. 程序运行时进行License的验证
那么这样就有以下几点需要保证:
1.使用客户端Dll文件取得客户端机器的唯一信息
2.对取得用户机信息的客户端Dll文件进行签名,保证此文件不被篡改,此时不能保证dll被调用.(这个Dll可是我进行软件保护的核心,随便被用户改掉可不行^0^)
3.根据用客户端Dll文件取得客户端机器的唯一信息产生License, 并对License文件签名,保证此文件不被篡改(即用户不可能通过修改License进行破解)
3.Java代码中安全验证程序分散于系统的各个子模块中(保证Java的调用代码的安全, 避免用户修改一处代码即可破解的情况,除非其能找出所有的Java调用代码:P)
4.在验证是,检查客户端Dll文件是否被加载,保证Java运行和外部系统中的接口被唯一调用
检查Java程序运行时是否载入客户端Dll文件(BTW:这是一个JNI程序调用)
大致上就是这几点, 请各位指点一下还有什么不足或漏洞.
另外,关于第4点, 如何取得在Java程序运行时加载了多少个Dll,不知到大家有没有什么好办法.
还有,客户端Dll文件取得客户端机器的唯一信息我准备是用网卡Mac地址信息, 但在许多情况下用户可以自行修改Mac地址,所以不能保证用户机器的唯一性, 不知还有什么机器的物理信息是不变的,也请大家一起指点一下
嗯, 分不够可以在加, 还请大家多帮忙:)