编写限时许可证的代码

时间:2011-06-23 11:05:25

标签: .net licensing httpwebrequest

我已经看到为此实施的策略是从网站(google.com)请求页面并读取响应中的时间标题以确定真实时间而不是使用窗口时间(可以通过用户)。

我知道绕过这种情况的唯一方法是用户创建本地网络服务器,然后将网站google.com(使用hosts文件)指向localhost。

我不介意用户非法使用我的软件,如果他愿意牺牲互联网的主页,因为我认为只要他的主机文件将google.com重定向到localhost,他将无法打开google.com伪造时间戳。

我的问题是:用户是否还能以任何方式打开google.com并非法运行我的软件? (除了明显使用多台机器外)

3 个答案:

答案 0 :(得分:3)

无需使用代理或通过其IP地址直接连接到Google。逆向工程师(在这种情况下是破解者)不会打扰那些“黑客”(如避开保护的狡猾方式),而是拆卸你的应用程序(以正确的方式绕过保护),找到“保护”的位置“你的代码 - 并补丁那部分。假设您创建的方法如果验证时间未更改则返回true,否则返回false。所有逆转器需要做的是使该方法始终返回true,无论天气他甚至连接到互联网(另一个原因,为什么需要互联网连接的保护方案是一个坏主意...他们需要互联网连接^^ )。或者他可以对密钥比较算法进行逆向工程 - 并创建密钥生成器。

Dongles已被破解(对在线资源的检查非常相似),Steam在推出后不久就被破解了(Halflife需要在线注册才能运行......很长一段时间......)。即使是完整的在线游戏也已“破解” - 对于大多数MMO而言,你会发现从头开始编程的私人服务器。因此,即使在服务器上运行应用程序的所有业务逻辑也不会保护它免受破坏。

我过去自己有逆向工程复制保护(除此之外,我还没有成为一个破解者,而是学习如何保护我的代码),而且经常可以看到程序员花了多少时间来编写这些代码片段,只是通过更改简单的jmp-instruction来打败。

恕我直言,程序员不应该浪费太多时间来保护他/她的应用程序。只要普通用户无法破解它,在大多数情况下保护就可以了。花在保护上的时间越长意味着浪费更多的时间,因为总会有人能够打破它。

所以我的建议是:构建一个可靠但简单的保护,以便普通计算机用户无法破解它。然后继续前进。

答案 1 :(得分:2)

当然,他们可以将浏览器配置为使用代理,或者,您只需将IP地址添加为书签。

我不知道这些东西的最新状态是什么,但是每次应用程序启动时只跟踪系统时间是不够的,看它是否已经回滚?< / p>

另一种常见的技术是检查几个常见目录(系统文件,临时空间等)中的时间戳,如果时钟被回滚,您可能会看到未来的某些时间戳。

当然,如果你想真的偏执狂,你可以让它在你自己的服务器上进行身份验证,在一些加密声音的挑战 - 响应方案中。然而,那个人更容易引起问题并惹恼别人。

答案 2 :(得分:2)

为什么不使用IP地址连接Google(在您的应用中)?然后它不能被hosts文件重定向。

http://209.85.148.99/

更好的是,手动进行DNS查找以绕过hosts文件。