我正在开发一个Windows应用程序.这要求用户注册使用它...现在,我将我的许可证信息存储为APpData中的文件.但删除该文件会重置试用版日期.所以,我现在计划将其保存在注册表中.但是,大多数用户在Windows中没有管理权限(受限用户)来访问注册表.我能做什么 ?我在哪里可以保存我的序列号和日期?
Adr*_*tti 65
在我看来,关键是你必须改变如何管理您的许可.我写了一个项目(托管在git上)来演示这里描述的一些技术.
如果他们删除了许可证数据文件,那么试用重启?如果文件不存在,请不要启动应用程序,并在首次安装时使用安装操作创建应用程序.
现在你面临第二个问题:如果他们卸载并重新安装应用程序怎么办?第二步是将此文件移动到应用程序数据文件夹(例如Environment.SpecialFolder.CommonApplicationData).这只是更安全一点(因为卸载时不会删除应用程序数据)但是他们仍然可以手动查找和删除它.如果应用程序将由低权限用户安装,则您无法做多少事情(您无法尝试在注册表中的某处隐藏许可证).
现在这是你和骇客之间的游戏.他们永远都会赢.你只会让合法用户的生活变得更加艰难,所以阅读暨grano salis.您可以在哪里存储许可证数据:
\0.看看这个好帖子.如何在文件中隐藏许可证?
如果你要使用文件(它位于何处无关紧要),你可能会考虑让破解者生活(一点点)更难.现在我想到了两个解决方案:
备用数据流.文件附加到另一个文件,只有在Windows资源管理器中搜索它们才能看到它.当然有管理它们的工具,但至少他们必须明确地搜索它.
将其隐藏在应用程序数据(位图,例如,使用隐写术)中.他们只是不知道它的许可证数据,哪个更安全?问题是他们可以轻松地反编译您的C#程序以查看您的操作(请参阅有关代码混淆的段落).
可能还有很多其他人(幻想在这里是我们的主人)但不要忘记......破解者会发现它(如果他们真的想要),所以你必须平衡你的努力.
保持您的许可模式,您现在已经走上了死路.您必须采取的决定是,如果他们使用试验的风险超过允许的风险高于他们因无聊保护而停止使用您的申请的风险.
验证
如果您可以假设他们有网络连接,那么您可以使用一些唯一ID在线验证许可证(仅在他们第一次运行您的应用程序时)(即使它是关于Windows 8的,您可以在此处查看此帖子) .服务器端验证可能非常棘手(如果您希望以正确的方式执行),本文将解释一个以正确方式管理它的程序流示例.
数据混淆/加密
您的许可证文件/数据现在位于安全的地方.几乎没有破解者会找到它.现在你需要另一个步骤:混淆.如果您的许可证数据一旦找到您的文件就是纯文本,则更改它太容易了.您有一些选择(以增加的安全性和复杂性排序):
请注意,数据混淆/加密可以与上述隐写术结合使用(例如,隐藏图像中的加密许可证文件).
代码混淆
如果您没有使用非对称加密的许可证签名,那么最后一步是对代码进行模糊处理.无论你做什么,他们都能看到你的代码,检查你的算法并解决它.太伤心了,你正在部署说明书!如果您愿意,可以使用混淆器进行模糊处理,但我强烈建议您将许可证检查移到不太明显的位置.
我喜欢这种方法,因为他们会看到有许可证检查,但......他们找不到许可证代码.当然,任何好的饼干都可以在10分钟内解决这个问题,但你会(稍微多一点)安全地从随机问题中解脱出来.
总结一下,这是一个列表,列出了您可以采取哪些措施来提供更强大的许可证检查(当然,您可以跳过一个或多个步骤,但这会降低安全性):
附录:软件保护Dongles
关于硬件密钥的小附录(软件保护加密狗).它们是保护软件的宝贵工具,但您必须更加谨慎地设计保护.您可以假设硬件本身是高度安全的,但弱点是它与计算机的连接以及与软件的通信.
想象一下,只需将许可证存储到密钥中,破解者可以使用外部USB(假设您的SPD是USB)与多台计算机共享相同的密钥.您还应该在密钥中存储一些硬件唯一ID,但在这种情况下,弱点是连接(硬件可以由软件驱动程序模拟).这是一个非常简单的破解和这种错误的安全感("我正在使用软件保护加密狗,我的软件是安全的")将使您的应用程序更加脆弱(因为您有可能忘记其他基本保护以简化许可证管理).
使用SPD进行设计不良保护的成本与效益应该会让您考虑使用普通的USB笔式驱动器.对于SPD,它需要1美元而不是15/20美元(或更多),并且您对休闲破解者有相同程度的保护.当然,它不会阻止一个严重的饼干,但一个设计糟糕的SPD也不会阻止它.
一个真正的保护(假设你不是一个上运行DRM功能的设备)是一个软件狗也可以执行你的代码.如果你可以将一些基本算法(至少解密重要的 - 和动态的 - 支持文件)移动到密钥中然后破解你的软件,他们将需要破解硬件.对于一个半体面的加密狗来说,这是一项非常非常艰巨的任务.更仔细地设计这个和更多的代码,你移动到关键,你会更安全.
在任何情况下,您都应该怀疑营销活动:使用加密狗进行软件保护并不容易.它可以(更)安全,但并不像供应商所说的那么容易.在我看来,即插即用保护成本与其好处相比太高(好处=它会让黑客的生活更加艰难).