3

我知道已经存在关于 SO 的类似问题。但我的问题更具理论性。

我想知道,是否可以设计一个万无一失的试用系统?我所说的万无一失是指即使破解者知道这种系统的算法也无法破解的系统?

抱歉,如果这不是编程问题。

编辑:我想我应该让我的问题更实用。我问的是整个系统,而不是独立的应用程序。系统由装有 Linux 操作系统的 PC 和一些与之连接的硬件组成。也许我可以使用硬盘加密?

4

4 回答 4

4

可能唯一的方法是基于 Internet 的“软件即服务”应用程序。如果您不提供访问权限,他们就没有使用该软件。如果它是基于桌面的应用程序,那么某些关键功能仍然必须位于某处的在线服务器上。

如果黑客在其本地机器上拥有整个应用程序,则可以对其进行逆向工程并以某种方式“破解”。克服这个问题的唯一方法是确保某些功能永远不会出现在他们的机器上。

于 2009-05-07T11:48:26.537 回答
3

拥有防破解软件的唯一(理论上)方法是拥有一个完全封闭的系统。如果您控制从硬件到操作系统再到应用程序和开发工具的所有内容,则可以防止篡改。

请注意我是如何说这是理论上的。不可避免地,你会找到一个硬件黑客,他会想办法修改硬件(参见modchips)。从那里,他们可以加载他们想要的任何软件并修改已经存在的软件。

适用于物理安全(保险箱、保险库等)的相同模型也适用于软件。关键是使窃取/复制商品的成本高于通过合法方式获取商品的成本。您永远无法创建一个万无一失的系统,但您可以轻松地防止脚本小子和爱好黑客破解您的产品。另一方面,专业人士为破解而活。他们会找到方法的。

于 2009-08-05T17:06:00.053 回答
1

您可以将您的应用程序设计为依赖于除您之外的任何人都可以控制的远程服务器。

于 2009-05-07T11:48:40.607 回答
0

不。你可以让它变得非常困难,但你的问题相当于“我怎样才能让别人运行代码但不让他们运行代码”。

例如,您可以省略代码的一小部分但很关键,并要求从您控制的服务器下载该代码。这使您可以跟踪试用活动并关闭特定用户。但是,一旦他们收到代码,他们就可以捕获它并在足够的工作量下构建您的产品的无阻碍版本。

于 2009-05-07T11:53:59.080 回答