问题描述
Hi,请问在C#窗口应用程序中要加入License授权才能使用,这一般有哪些方法?以及要注意些什么事项?请指点,谢谢.
解决方案
解决方案二:
加壳就行,别的都完蛋
解决方案三:
获取机器码然后将其加密,加密后的数据就是License一般用rsa加密你在软件中配置好公钥私钥你自己留着
解决方案四:
引用2楼laiyongxin的回复:
获取机器码然后将其加密,加密后的数据就是License一般用rsa加密你在软件中配置好公钥私钥你自己留着
不是很明白,如果没有私钥,我在程序中怎么验证用户得到的License文件或序列号??我又如何在程序中来解密?
解决方案五:
引用1楼liucqa的回复:
加壳就行,别的都完蛋
你说的加壳是什么意思 ? 如果我要在程序中验证License有没有某一个指定的功能,(例如:写功能,如果没有写功能的话,就不能使用某个模块),这加壳能做到吗?
解决方案六:
你不加壳,代码就是裸奔,有License也没用
解决方案七:
引用5楼liucqa的回复:
你不加壳,代码就是裸奔,有License也没用
可以说得详细一点吗? 加壳后就可以不用License吗?
解决方案八:
引用3楼u013510302的回复:
Quote: 引用2楼laiyongxin的回复:
获取机器码然后将其加密,加密后的数据就是License一般用rsa加密你在软件中配置好公钥私钥你自己留着不是很明白,如果没有私钥,我在程序中怎么验证用户得到的License文件或序列号??我又如何在程序中来解密?
rsa加密你先去了解下.你只要保管好你的私钥就可以了,程序中只要用公钥就可以进行解密你用私钥加密过的数据,只要解密后的数据和机器码进行比对一下就能判断该机器是否通过验证了
解决方案九:
引用7楼laiyongxin的回复:
Quote: 引用3楼u013510302的回复:
Quote: 引用2楼laiyongxin的回复:
获取机器码然后将其加密,加密后的数据就是License一般用rsa加密你在软件中配置好公钥私钥你自己留着不是很明白,如果没有私钥,我在程序中怎么验证用户得到的License文件或序列号??我又如何在程序中来解密?
rsa加密你先去了解下.你只要保管好你的私钥就可以了,程序中只要用公钥就可以进行解密你用私钥加密过的数据,只要解密后的数据和机器码进行比对一下就能判断该机器是否通过验证了
那公钥是不是硬写在程序里面?另外,如果这个私钥不需要用在解密,那这个私钥还有什么用??
解决方案十:
引用8楼u013510302的回复:
Quote: 引用7楼laiyongxin的回复:
Quote: 引用3楼u013510302的回复:
Quote: 引用2楼laiyongxin的回复:
获取机器码然后将其加密,加密后的数据就是License一般用rsa加密你在软件中配置好公钥私钥你自己留着不是很明白,如果没有私钥,我在程序中怎么验证用户得到的License文件或序列号??我又如何在程序中来解密?
rsa加密你先去了解下.你只要保管好你的私钥就可以了,程序中只要用公钥就可以进行解密你用私钥加密过的数据,只要解密后的数据和机器码进行比对一下就能判断该机器是否通过验证了
那公钥是不是硬写在程序里面?另外,如果这个私钥不需要用在解密,那这个私钥还有什么用??
公钥可以硬写在程序里私钥用来加密用你先去google下rsa加密
解决方案十一:
引用9楼laiyongxin的回复:
Quote: 引用8楼u013510302的回复:
Quote: 引用7楼laiyongxin的回复:
Quote: 引用3楼u013510302的回复:
Quote: 引用2楼laiyongxin的回复:
获取机器码然后将其加密,加密后的数据就是License一般用rsa加密你在软件中配置好公钥私钥你自己留着不是很明白,如果没有私钥,我在程序中怎么验证用户得到的License文件或序列号??我又如何在程序中来解密?
rsa加密你先去了解下.你只要保管好你的私钥就可以了,程序中只要用公钥就可以进行解密你用私钥加密过的数据,只要解密后的数据和机器码进行比对一下就能判断该机器是否通过验证了
那公钥是不是硬写在程序里面?另外,如果这个私钥不需要用在解密,那这个私钥还有什么用??
公钥可以硬写在程序里私钥用来加密用你先去google下rsa加密
我大概想明白其中的意思了,私钥应该是可以用来生成很多个License文件,这个理解是否准确?我稍后再googlersa,我还有一个问题想问清楚一些,关于上面所说的加壳,对License有帮助吗?用RSA是否不用加壳?还有如何防止加入了License后又给容易的把License限制去掉?这点应该用什么概念??
解决方案十二:
引用6楼u013510302的回复:
Quote: 引用5楼liucqa的回复:
你不加壳,代码就是裸奔,有License也没用可以说得详细一点吗? 加壳后就可以不用License吗?
加壳就是加代码呀,代码里面加啥都行,具体工具好多,搜索.net加壳
解决方案十三:
使用现成的加密狗。加密狗主要做两件事情,一个是对程序加密(也就是所谓的加壳),一个是加密狗本身是硬件,具有唯一性和防复制性。这两者缺一不可,如果不加密,破解者很容易修改程序绕过验证机制。如果不使用加密狗,硬件特征很容易伪造。总之,采用现成的解决方案省时省心。
解决方案十四:
该回复于2014-01-21 22:24:12被版主删除
解决方案十五:
引用12楼caozhy的回复:
使用现成的加密狗。加密狗主要做两件事情,一个是对程序加密(也就是所谓的加壳),一个是加密狗本身是硬件,具有唯一性和防复制性。这两者缺一不可,如果不加密,破解者很容易修改程序绕过验证机制。如果不使用加密狗,硬件特征很容易伪造。总之,采用现成的解决方案省时省心。
不可能要每个客户的服务器都插上个加密狗吧???如果我在程序中加入了License验证功能后,现在还有什么做法是可以防止把License从程序中去掉的保护机制?
解决方案:
C#授权组件设计-LicenseControlProjecthttp://blog.csdn.net/wonsoft/article/details/3123264
解决方案:
http://www.cnblogs.com/JamesLi2015/archive/2013/05/03/3055998.html
解决方案:
引用16楼wind_cloud2011的回复:
http://www.cnblogs.com/JamesLi2015/archive/2013/05/03/3055998.html
非常感谢,很有用。但是,该文中好像没有提及到一点,就是当其他用户拿到应用程序后,通过反编绎将代码反出来,然后将涉及到License的那一部分代码去除,对于这一点我们在程序中应该如何做才能避免此情况的发生??
解决方案:
引用17楼u013510302的回复:
Quote: 引用16楼wind_cloud2011的回复:
http://www.cnblogs.com/JamesLi2015/archive/2013/05/03/3055998.html非常感谢,很有用。但是,该文中好像没有提及到一点,就是当其他用户拿到应用程序后,通过反编绎将代码反出来,然后将涉及到License的那一部分代码去除,对于这一点我们在程序中应该如何做才能避免此情况的发生??
楼上不是说了加壳么?
解决方案:
引用18楼happy09li的回复:
Quote: 引用17楼u013510302的回复:
Quote: 引用16楼wind_cloud2011的回复:
http://www.cnblogs.com/JamesLi2015/archive/2013/05/03/3055998.html非常感谢,很有用。但是,该文中好像没有提及到一点,就是当其他用户拿到应用程序后,通过反编绎将代码反出来,然后将涉及到License的那一部分代码去除,对于这一点我们在程序中应该如何做才能避免此情况的发生??
楼上不是说了加壳么?
我不是很明白那个加壳是怎么样做?这个加壳跟使用.NetObfuscator将代码混淆是不是同一样东西?可否给个例子?
解决方案:
不加壳是很容易给反编译的加壳:http://www.cnblogs.com/jason-liu-blogs/archive/2012/07/30/2615883.htmlhttp://download.csdn.net/download/wwtwx/689064