我们如何检测访问服务器的代码的修改版本?

时间:2016-09-25 07:28:44

标签: android ios security unity3d reverse-engineering

From this。我们无法阻止倒车工程师。 但是我们如何检测应用程序是否已修改并尝试访问我们的服务器? 特别是在iOS和Android中。

2 个答案:

答案 0 :(得分:0)

我们已经成功使用了一段时间的东西如下:

  1. 在编译阶段,制作DLL& amp;的MD5&#;可执行并将它们保存到服务器可以访问的位置。
  2. 在客户端连接到服务器之前,让它计算MD5以及
  3. OnConnect,将MD5发送到服务器并让服务器验证它们
  4. 由于正确的MD5应该是服务器的秘密,因此您将尽早尝试修改代码,并标记这些帐户以供进一步审核。但即便如此,一个超级成熟的开发人员也会想出这个,然后发送你期待的MD5。

    It's not fool proof ,但我真的相信一切都没有,你所能做的就是让它尽可能地复杂化,这会让事情变得复杂一点,因为MD5的意志每次发布更新时都会更改,您甚至可以使用connectionID对MD5进行哈希处理,这会使每个连接的哈希值发送给服务器唯一。

    使用这种方法将无法禁用/删除检查,因为服务器总是希望发送MD5 / Hash。

    using (var md5 = MD5.Create())
    {
        using (var stream = File.OpenRead("path-to-your.file"))
        {
            return md5.ComputeHash(stream); // returns the MD5 byte[]
        }
    }
    

    正如您所链接的帖子所说: You basically can't protect your application from being modified. And any protection you put in there can be disabled/removed, You can do different tricks to make hacking harder though.

答案 1 :(得分:0)

我已经关闭了这个问题。但我有个主意。希望你们有些人考虑并评论这个。

正如答案所说。

  

您基本上无法保护您的应用程序不被修改。你放在那里的任何保护都可以被禁用/删除,你可以采取不同的技巧来加强黑客攻击。

客户端的任何保护都可以删除。

怎么样

  1. 将验证码放在服务器上。
  2. 下载此代码并在运行时运行它。 (每次运行都必须得到独特的结果)
  3. 将验证结果发送到服务器以进行授权。
  4. 因为您已经下载了脚本的一部分。您必须从服务器端下载DLL或替代使用this