【问题标题】:Android app calculating its own MD5 checksumAndroid 应用程序计算自己的 MD5 校验和
【发布时间】:2012-12-05 08:15:06
【问题描述】:

Android 应用程序在安装后如何计算自己的 md5 校验和?尝试谷歌搜索,但所有结果都是关于另一个应用程序计算其他人的校验和。

【问题讨论】:

  • 你可以为每个用户提供一个独特的软件版本...但是你为什么不做一个文件类型管理器,而不是用它自己的文件空间服务器查找来加密标题和破坏文件。

标签: java android md5 checksum


【解决方案1】:

这会有什么用?为了与某些东西进行比较,预期的校验和需要在 APK 中。但是,如果有人更改了您的 APK(重新打包等),他们也可以轻松更改预期值。您可以从服务器获取它,但如果它们弄乱了您的包,也可以禁用它。

此外,一些工具会直接修补 Dalvik 缓存中的代码,从而无需接触 APK 即可更改应用的功能。

通常,您只需获取 APK 的路径,读取二进制文件并使用MessageDigest 进行计算。您可以使用PackageManager 获取应用信息,然后ApplicationInfo#sourceDir 为您提供包的位置。顺便说一句,这可能不适用于 JB(4.1 及更高版本)上的付费应用,因为您无权读取实际 APK(这是​​“前向锁定”的结果,也称为“应用加密”)。

【讨论】:

  • 好吧,我有兴趣为我正在开发的一堆应用程序编写一个库,这些应用程序基本上调用 home 来进行许可证验证等等。它将传递 IMEI、应用程序 ID、应用程序版本、apk 校验和等,这些都在初始 Activity 实例化时传递给类。然后,Web 端会将传递的校验和与传递的版本所期望的校验和进行比较。如果它们不匹配,则可能会认为包裹被篡改(可能是盗版?)
  • 我可以被盗版而不被篡改。并且在不更改 APK 的情况下进行了修补(参见 Lucky Patcher)。你怎么知道IMEI?如果设备只有 WiFi 怎么办?通常不是一件容易的事。您可能想研究一下 Google 的 LVL,尽管它有自己的问题。
  • 正如 Whiskey 所说,它当然很有用。对于希望减少在线排行榜作弊的开发人员来说,除了推送分数之外,让应用程序向服务器发送哈希值意味着这是一种防止 apk 篡改的故障安全方法,即使它仍然会屈服于动态黑客攻击
猜你喜欢
  • 2015-11-20
  • 2011-05-25
  • 2012-05-18
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
相关资源
最近更新 更多