2009-08-26 55 views
2

我APT(反Paching技术)的逻辑保护可执行如下...被修补

1)店铺的MSSQL服务器上的可执行文件保护的MD5哈希值。

2)执行md5比较(在我的应用程序启动时)服务器上发现的散列,以及可执行文件本身。

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

以上所有这些之前它最终被缓存!

我的意思是什么是保护文件不被修补的最佳方法? 没有使用现成的工具(.net反应器,虚拟化器等)

编辑:有一些东西刚刚进入我的脑海。

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

+0

什么是用例? – UnkwnTech 2009-08-26 09:18:56

+0

对不起,但我的母语不是英语。你能否更具体一些? – OrElse 2009-08-26 09:21:39

+0

除了被接受的答案之外,关键是要注意MD5是死的算法,您必须使用SHA-2(SHA-0和SHA-1同样死亡)。 – 2009-09-29 07:17:51

回答

5

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

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

编辑:我想最好的办法是纵深防御,因为你的应用程序必须是在线我倒是:

  • 需要验证:验证用户,通过一个加密密钥希望和需要的关键检查接收/发送数据。
  • 混淆:它使得饼干变得更难。
  • 继续检查:除了检查谁在发送数据之外,每次发送请求时都要验证应用程序。

这些都仍然可以绕过,但它们使事情变得更加困难,并可能阻止一些如果你的应用程序不值得他们很多。

+0

这就是为什么我添加了“以上所有这些之前它最终被缓存!” 你能指点我更安全的东西吗? – OrElse 2009-08-26 09:25:03

+0

Upvote适用于饼干的正确名称。 – 2009-08-26 09:29:21

+1

@gipap:破解者在运行之前修改你的程序。通过确定你的程序在运行之前不能做任何事情。而它被修改后,它已不再是你的程序。 – MSalters 2009-08-26 09:42:06

2

你不能。一旦有其他人拥有了你的文件,他们就可以做他们喜欢的文件 - 第一件事就是修补你的反补丁代码。

2

补丁应用程序意味着'破解者'完全控制代码运行的机器(至少有足够的控制权来修补可执行文件)。因此,补丁预防尽管可能很智能,但却与控制流程相反。

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

1

如果应用程序在别人的机器上运行,则无法阻止它们修补它。你可以让它变得更难,但这是一场轰轰烈烈的比赛:你赢不了。不管你做得有多复杂,某个地方的某个人会认为这是一个有趣的挑战,打破你的保护,他会成功的。然后,其他人只需要下载他的版本。 Skype(我知道)是目前最极端的补丁保护形式。它非常复杂,但它已被打破。

由于您的应用程序显然是运行在网上,你可以问问自己为什么要防止在首位的补丁(也许这是为了防止用户进入一些不好的价值观?还是要阻止他们看到了一些信息,这是目前在程序中?),然后构建您的程序,以便在服务器上发生任何想要隐藏或检查的内容。

例如,如果它是一款游戏,并且您希望防止玩家窃听游戏以知道其他玩家在哪里:更换服务器,以便它只发送您已经看到的玩家的坐标信息。

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

唯一的例外是如果您控制程序运行的硬件。但即使如此,要做到这一点也很困难(请参阅:XBox,PS3以及其他许多试图做到这一点并失败的控制台)。利用客户机/服务器体系结构可能会更好,而不是投注“可信计算”。

0

现在的饼干不用打扰补丁你的可执行文件;他们只是简单地改变内存中的程序变量,使其行为更符合他们的需求。捍卫这一点是非常困难和合理的毫无意义的;大多数游戏的防破解工作只能通过搜索已知的破解程序(如AV引擎)的签名来实现。

0

大家都知道,你不能阻止某人,但你可以让他们更难,你甚至可以走出深渊,做一些内存验证的东西,如War Of Warcraft Warden系统。

如果您告诉我们您正在写什么语言,我们可能会提出一些简单的混淆方法。

相关问题