【问题标题】:Can a signed apk be extracted and edited?可以提取和编辑已签名的 apk 吗?
【发布时间】:2017-09-24 12:29:05
【问题描述】:

我想知道的是可以提取和编辑签名的 apk 吗?攻击者能否再次压缩apk并攻击受害者?

我知道我们可以使用proguard来隐藏代码,但是有人说apk仍然可以通过逆向工程提取和修改。

我主要关心的是我想加密我的 java 文件,因为我的 java 文件中有一些身份验证数据。

谁能给我一个防弹方法来保护java文件不被访问。

编辑 -

在堆栈中发现了一些旧线程,但他们从未解释过签名的 apk 并保护它们不被利用。

【问题讨论】:

  • 我不太了解签名的 apk,但 7zip 总能解决问题

标签: android android-studio


【解决方案1】:

是的。加密签名不​​是加密。签名证明签名的人知道密钥。假设密钥是安全的,您可以确定由同一密钥签名的两个文件来自同一个人。通过使用公钥和私钥进行某些形式的签名,它可以用来证明签名者的身份。这并不提供任何防止读取该数据的保护,尽管它确实提供了防止声称为真实应用的伪造副本的保护(假设用户注意签名)。

没有办法做你想做的事。最后,应用程序必须由处理器或解释器运行。这意味着它需要被翻译成处理器可以理解的指令。如果您希望某些东西安全,请不要将其放在客户端设备上。如果您将其发送到需要解密并使用它的设备,则无法保护它。

【讨论】:

  • 有什么方法可以让逆向 apk 变得困难吗?我只是不想让人类阅读我的文件。
  • 有多种方式,但真正的问题是——你为什么在乎?如果您的算法确实具有创新性,请申请专利。你会得到真正的保护。如果您担心它的数据,请不要将其移出服务器来保护它。如果您仅仅因为担心复制而担心代码,请意识到复制大多数应用程序是微不足道的——有经验的高级开发人员只需稍加研究就可以重写几乎任何应用程序。确保您安全的是继续创新和愿意做这项工作,以及围绕您的应用构建的业务。
  • 哇这么好的解释。感谢您解释问题。
【解决方案2】:

任何 APK 都可以解压缩并读取其源代码。但是,您不能在没有签名密钥的情况下对其进行编辑和签名。

没有办法加密您的源文件,并且其中的所有内容都可以被任何人读取。如果预计身份验证数据是机密的,则不应将其存储在应用程序中。

【讨论】:

    【解决方案3】:

    签名的 apk 很容易被逆向工程。您永远不应该将身份验证数据放在源代码中。对此没有防弹解决方案。但是,您可以通过编码而不将关键数据放置在明显的位置来使攻击者难以对付。

    【讨论】:

    • 我可以只加密认证文件吗?剩下的文件正常吗?
    • 您无法加密 java 文件。您可以加密文本文件,但您需要将解密密钥保存在应用程序中。所以这不是一个解决方案。唯一可能的解决方案是从后端服务器执行身份验证。
    • 是的,我明白了。
    【解决方案4】:

    您应该使用另一种方式来使用您的身份验证数据,我已经阅读了一些关于构建二进制文件并将其作为 .so 文件存储在 lib 目录中的内容,我不确定它的过程到底如何,因为我没有尝试过,但您可以研究另一种方法,将私有数据存储在 Java 源中并不安全。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-30
      • 2013-06-06
      • 1970-01-01
      • 1970-01-01
      • 2018-02-28
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      相关资源
      最近更新 更多