我见过很多次,有很多不同类型的软件,但我一直想知道的是,软件密钥是如何知道生成什么密钥的。我知道它的基本原理: keygen查找软件安装文件中的某个位置,并创建一个与某个加密文件匹配的密钥,该密钥允许程序工作。但我想知道他们是如何做到的,以及如何预防。这是一个多部分的问题。
发布于 2012-04-01 07:07:58
这取决于有很多的实现。其中一个是在堆栈过流中讨论的:
假设您不想为每个用户进行特殊构建,那么:
注:每个密钥方案都可以破解。这就是为什么很多工具使用在线验证。
使用前一种方法时,通常没有加密文件。可能还有其他方法用另一种算法生成密钥,但它们从不将所有密钥存储在程序中。
如果您指的是将用户键入的密钥存储在系统中,那么有时会将其保存在配置文件中。有时,他们使用带有硬编码密钥的系统加密(如AES)来加密该文件。
因为有些人可以找出程序使用的方案,并在他们自己的keygen中实现它。
在线激活,但是你越难让客户使用该软件,他们购买它的可能性就越小。最后,没有一款软件可以防止盗版。如果有的话,像Adobe和微软这样的公司就会立即雇用你。
发布于 2012-04-11 18:33:03
计算机软件的序列号有一个特定的模式,它允许安装程序或应用程序检测它是否是合法密钥。一个非常简单的例子是,每个序列号都有三个出现在其中的数字5,所以1932-1253-2319-5512将是一个工作序列号。在现实生活中,数字之间的关系当然会更加复杂。
所提供的软件包含一个检查串行是否有效的算法。软件创建者有一个允许他为产品创建序列号的软件。
为了创建一个keygen,一个cracker组(专门负责破坏复制保护方案的人)分析程序的可执行部分,以找到检查序列的部分。然后,他们重建算法,以创建基于检查代码的序列化。完成的keygen是一个应用程序,应用该算法创建序列号。
有时密钥实际上并不包含算法,而是一个有效序列号的列表,其中一个是随机选择的。
在后面的service中,Windows xp的keygen更复杂,因为Microsoft不仅检查密钥是否有效,而且还检查密钥是否已随副本出售,是否已在另一台计算机上使用。keygen将大量请求发送到Microsoft服务器,以检查它是否是工作密钥。
发布于 2012-04-02 12:10:57
密钥系统是如何工作的?
最常见的形式是if (some-complex-or-not conditions-here) then (OK)。被检查状态的复杂性仅限于你的幻想
它通常在哪里找到这个“加密文件”?
没有任何常见的模式,在哪里和如何存储和读取这些信息。它可以是文件,而不是文件(例如,在Windows情况下,注册表项)
公司是怎么加密这个文件的?
通常的实际操作--永远不要用纯文本存储,在存储前使用不可逆转的转换方法,但是--即使是纯文本密钥--对于密钥激活也可能是防弹的:被盗密钥一旦激活,就不会从第二次注册(可滥用和可破解的方法,但可能在某种程度上起作用)。
keygen用于创建密钥的方法是什么?
验证有效性的逆向工程方法有助于创建密钥数据的逆向工程算法。
公司可以采取什么措施来防止在盗版软件中使用密钥?
非技术合理的产品价格。在这种情况下,键盘将出现(五月)无论如何,但它将更多的“只是为了乐趣”游戏的破解团队,而不是要求(并与直接影响)的大众消费产品。
技术上-防止在调试器下运行,结合文件中的加密代码(内存中的解密,一些敏感部件可能有多层),内存操作链,外部存储中密钥的在线验证(见以前的方法,这些方法也分别适用于检查程序).
https://security.stackexchange.com/questions/13343
复制相似问题