2

我对APT(Anti-Paching Technology)的逻辑如下......

1) 在 MSSQL 服务器上存储可执行文件的 md5 哈希以进行保护。

2)执行md5比较(在我的应用程序启动中)在服务器上找到的哈希与可执行文件本身。

3) 如果比较失败,则静默退出应用程序。

而以上所有这些,在它最终被修补之前!

我的意思是保护文件不被修补的最佳方法是什么?不使用现成的工具(.net reactor、virtualizer 等)

编辑:我想到了别的东西。

有没有办法在服务器端检查应用程序的完整性?我的意思是我的应用程序只能在线运行。我可以在服务器(我的域)上执行一些可以检查应用程序完整性的东西吗?

4

6 回答 6

5

问题是破解者会在第 2 步精确地修补应用程序,删除哈希检查代码。

所以我不会说这对严重的饼干非常有效。

编辑:我想你最好的选择是深度防御,因为你的应用程序必须在线我会:

  • 需要身份验证:希望通过加密密钥对用户进行身份验证,并要求进行密钥检查以接收/发送数据。
  • 混淆:它让饼干变得更难。
  • 持续检查:除了检查谁在发送数据,每次发送请求时验证应用程序。

这些仍然可以被规避,但它们会使事情变得更加困难,并且如果您的应用程序对他们来说不值那么多,它们可能会劝阻一些人。

于 2009-08-26T09:21:50.223 回答
2

你不能。一旦其他人拥有您的文件,他们就可以使用它做他们喜欢的事情 - 首先是修补您的反补​​丁代码。

于 2009-08-26T09:33:09.310 回答
2

打补丁的应用程序意味着“破解者”可以完全控制代码正在运行的机器(至少有足够的控制权来修补可执行文件)。因此,补丁预防无论多么聪明,都在对抗控制流。

使您的二进制文件复杂化可能足以阻止修补,因此混淆器可能是您最好的选择。

于 2009-08-26T10:07:58.320 回答
1

如果应用程序正在其他人的机器上运行,您无法阻止他们对其进行修补。你可以让它变得更难,但这是一场空壳游戏:你不可能赢。不管你把它做得多么复杂,某个地方的某个人会认为打破你的保护是一个有趣的挑战,他会成功。然后,其他人只需要下载他的版本。当今最极端的补丁保护形式是 Skype(据我所知)。它非常复杂,但它已经被打破了。

由于您的应用程序显然是在线运行的,您可以问自己为什么要首先阻止补丁(可能是为了防止用户输入一些错误的值?或者是为了防止他们看到程序中存在的某些信息?),然后构建您的程序,以便您想要隐藏或检查的任何内容都发生在服务器上。

例如,如果这是一款游戏,并且您想阻止玩家入侵游戏以了解其他玩家的位置:更改服务器,使其仅发送您已经看到的玩家的坐标信息。

另一个例子:如果它是一个在线商店,并且您想确保用户不会提交价格不正确的采购订单,请检查服务器上的价格。

唯一的例外是您控制程序运行的硬件。但即使在那里,也很难做到正确(参见:XBox、PS3 和许多其他试图做到这一点但失败的控制台)。利用客户端/服务器架构可能比押注“可信计算”更好。

于 2009-08-26T13:06:28.580 回答
0

现在的破解者不会费心修补您的可执行文件。他们只是在内存中更改程序的变量,以使其行为更符合他们的要求。对此进行辩护非常困难,而且毫无意义;大多数游戏的破解保护只能通过搜索已知破解程序的签名来起作用(就像 AV 引擎一样)。

于 2009-09-21T13:42:06.250 回答
0

每个人都做到了,你不能阻止某人,但你可以让他们更难,你甚至可以深入研究并制作一些内存验证的东西,比如魔兽世界的守望者系统。

如果你告诉我们你用什么语言写的,我们可能会建议一些简单的混淆方法。

于 2009-09-29T07:14:56.243 回答