我正在为我写的软件编写自己的序列号验证/保护。
假设序列号验证器正在使用模式匹配...一旦验证了序列号,我该如何更改程序本身,以便它不再询问用户序列号?
我真的不想创建单独的许可证文件。有没有办法将其嵌入程序本身?或者注册表是唯一的其他选项(除了在线验证等)
答案 0 :(得分:6)
你不应该真正尝试编辑程序本身 - 它会破坏签名/强命名,exe / dll文件几乎肯定会被锁定,即使你进行影子复制:很多用户不会权限在程序文件中进行编辑(或点击一次)。
许可文件或注册表设置之类的外部设备似乎是合适的(除非您希望在每个客户端的服务器上构建应用程序)。
答案 1 :(得分:2)
有没有办法将其嵌入程序本身?
如果你暗示修改程序集,那么它可能是*,你需要有两个程序集 - 一个正在执行的程序集和一个你正在修改的程序集 - 因为正在执行的程序集将被文件系统锁定。并且您需要预留足够的空间来存储您打算注入的任何新值。
* 为了证明这一点,我创建了一个小的可执行文件,它只是简单地写了一个字符串的值,并使用十六进制编辑器来改变字符串的值。
你需要对你所做的改变非常聪明,否则注册软件然后简单地将修改后的二进制文件复制到其他机器就会绕过你的注册过程。
在注册表中存储注册详细信息可能是一个更容易的解决方案。
答案 2 :(得分:2)
我个人总是从机器硬件生成一个唯一的密钥,并将其存储在注册表中。
以下是一个唯一密钥的简单示例,但如果您需要为不同版本的软件使用单独的密钥,则可能需要对其进行扩展。
答案 3 :(得分:0)
您可以将输入的序列密钥保存到文件或注册表中,并在用户启动应用程序时对其进行身份验证。