3

我有一个适用于 Android 的应用程序,它以一种常见的方式将数据保存到 sqlite 数据库。当用户使用应用程序时,数据会发生变化等。到目前为止没有问题......

但是当用户使用一些备份软件(如钛备份或其他),对应用程序进行备份时,他可以将数据恢复到旧状态。我需要一种方法来保护应用程序免受此影响或检测恢复并处理它。

简单的工作流程:

  1. 安装软件
  2. 使用APP
  3. 到达APP数据库的STATE1
  4. 备份APP(使用任何备份/恢复应用程序,设备可以root)
  5. 使用APP
  6. 到达APP数据库的STATE2
  7. 将 APP(或仅数据)恢复到 STATE1 - 这是我在下次执行 APP 时需要拒绝或检测的点。

到目前为止,我使用了访问时间检测和比较,但通过不同的设备和 ROM 似乎真的不可靠。

谢谢你。

4

1 回答 1

2

为此,您需要在设备之外或至少在data目录之外保存一些状态。最简单的方法可能是将数据库文件的指纹保存在外部存储(SD 卡)上的某个“隐藏”目录中。或者,如果您的应用程序具有 Web 登录等功能,请为每个用户存储指纹。

在任何情况下,用户都可以完全控制设备,因此您无法 100% 阻止。您的应用程序需要优雅地处理数据库中的任何更改,或者如果它检测到致命的不一致则简单地失败。

于 2013-07-01T08:51:23.613 回答