【问题标题】:How to avoid reverse engineering of an APK assets folder resources items file?如何避免对 APK 资产文件夹资源项文件进行逆向工程?
【发布时间】:2013-12-02 20:24:04
【问题描述】:

我正在开发一个android 应用程序,在这个应用程序assets 文件夹中包含一些密码和一些imp 信息。 我要防止黑客访问any resources, assets or source code from the APK file,主要是assets resources

我怎样才能做到这一点?

我找到并考虑了以下解决方案,请纠正我并就此提出您的建议。

1) Put every data or files in assets folder in encrypted way.

在此解决方案中,当我需要使用此资产文件夹数据时,我需要每次都进行解密,这会使我的应用程序变慢。

2) To secure resources, don't include all important resources in the assets folder with APK. Download these resources at the time of application first start up.

这个解决方案也不适合我的应用程序,因为我想在离线模式下使用我的应用程序,如果它是第一次或第二次使用。

3) obfuscation would not protect assets folder data so we can not use that.

请提供您的建议和意见。

任何帮助将不胜感激。

感谢和问候

【问题讨论】:

    标签: android android-sdk-tools android-assets


    【解决方案1】:

    Android 上的逆向工程非常简单!你无法阻止这一点。 您不应在 APK 中存储任何敏感信息,因为有人可以轻松找到它们。

    如果您想在用户设备上存储某些内容,您应该使用非对称加密。

    可以在代码中隐藏一些数据,例如对称加密密钥,但如果有人想找到它,它会在几分钟内找到。 (如果你把它放在资产文件夹中,几秒钟......)

    编辑 如果你想在你的代码中放置一个对称加密密钥,不要这样设置:

    String myKey = "myEncryptionKey";
    byte[] key = myKey.getBytes();
    

    因为逆向工程师能够用一个命令列出你的 apk 中的所有字符串...所以使用类似的东西:

    StringBuilder sb = new StringBuilder();
    sb.append(m);
    sb.append(y);
    ...
    byte[] key = sb.toString().getBytes();
    

    byte[] key = Base64.decode("esfas09f8as90f8").getBytes();
    

    【讨论】:

    • 感谢您的回复。我可以在应用程序中硬编码对称密钥。我认为解码应用程序代码很难。
    • 再次感谢您的友好回复。你能告诉我吗。在这里,您建议我在这种情况下使用 StringBuilder,m 和 y 是字符串,对吗?所以逆向工程师无法读取这些字符串?
    • 是的,逆向工程师总是能够读取您的字符串。但是对于他来说,从几个 concats 构建密钥有点隐蔽...例如,当他列出所有字符串时,他会找到 {"e","y","m,", ...} 而不是 {"myEncrpytionKey"} 但相信我,如果有人想找到密钥,他会成功 如果你将密钥隐藏在本机代码的一部分(通过使用 NDK),将更难找到它,因为对本机代码进行逆向工程非常困难。
    【解决方案2】:

    用户可以访问您安装在客户端设备上的任何数据。 Proguard 之类的工具非常适合代码优化,可能会使代码的可读性稍差,但任何拥有您 APK 的人都可以对应用程序进行逆向工程并访问您包含在 APK 文件中的所有内容。

    例如,您可以将敏感数据存储在攻击者可以轻松访问的资产文件夹中,现在加密这很好,但是您使用什么密钥来加密它?密钥存储在哪里?

    还有一个名为 DexGuard 的工具可以加密字符串。然而,这还没有被证明是一种有效的防御方法,只会减慢攻击者的速度。

    总而言之,永远不要在您的应用上存储敏感数据,因为它无法受到保护。

    如果您想了解这有多简单,请查看以下工具:

    https://code.google.com/p/dex2jar/

    &

    http://jd.benow.ca/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-21
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 2012-09-25
      • 2015-03-15
      • 2018-10-08
      • 1970-01-01
      相关资源
      最近更新 更多