【问题标题】:Verify Android apk has not been repackaged?验证Android apk没有被重新打包?
【发布时间】:2012-09-28 21:31:53
【问题描述】:

希望提高我的 Android 应用程序的安全性,以标记 .apk 是否已被提取、修改、重新打包和退出。这是来自 Zdnet 的文章,指出了问题 link1。

担心的是,如果该应用程序成为黑客的目标,他们可能会添加恶意代码并上传到备用应用程序商店并欺骗用户下载它。

所以我正在考虑使用代码来验证 apk 或签名证书的校验和?

我很欣赏可以重新打包应用程序代码并删除任何安全代码,但这确实增加了重新打包它的难度,也许足以让他们尝试另一个应用程序。

[更新]我知道 Google Play 商店许可模块提供了类似的功能,但我正在为非付费应用和其他/非市场寻找一些东西。

【问题讨论】:

标签: android security checksum


【解决方案1】:

我最终使用了Dexguard(Android 付费混淆器)。它提供了一个执行 apk 验证的模块。它易于实施,并提供比一般保护更好的保护。

这是进行检查的代码:

dexguard.util.TamperDetection.checkApk(context)

主要问题是在哪里存储 apk 的校验和以进行验证,因为它可以被替换。 dexguard 方法是在本地检查它,但使用类/字符串加密和 api 隐藏等其他功能会掩盖此调用。

【讨论】:

  • 另一个问题可能是黑客在重新打包应用程序之前替换/删除了 dexguard 检查
  • 我看不到 tamperDetection 即使我也添加了 dexgurd 我的应用程序,我应该添加任何库吗?谢谢
【解决方案2】:

【讨论】:

  • 谢谢,这些文章指出了如何从 PackageManager 获取应用程序的签名。但是不是如何验证它是正确的(我可能遗漏了一些非常明显的东西。)
【解决方案3】:

使用 Google 许可服务它将与 Play 商店连接,以确保用户每隔几天购买一次应用。 (你可以设置金额) 也看看 ProGuard。它将所有的类、方法和变量名从你的代码中剥离出来,一旦反编译就很难理解。

【讨论】:

  • 谢谢,我知道许可服务,但这对非付费应用没有好处,我已经更新了问题。混淆也是一个好的开始,但并不能阻止反编译,同意它确实使它更难。
  • 对于付费应用来说也不够好。 Aptoide 上上传的多个应用程序已破解 Google 许可。
猜你喜欢
  • 1970-01-01
  • 2012-01-20
  • 2016-10-25
  • 2015-11-05
  • 1970-01-01
  • 2012-02-24
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多