如何从apk文件中获取数据库文件?

7
我有一个安卓应用的apk文件。我想要从这个apk文件中打开一个数据库文件:是否有任何官方工具可以从apk文件中打开数据库文件?
通过使用提取器,我提取了那个apk文件。最终我得到了一些文件,包括assets、bin、lib、res文件夹,但我找不到数据库文件和布局文件。
我搜索了以下路径:
assets->data
但我在assets文件夹里没有找到data文件夹。为什么呢?

很可能数据库不存在。最有可能是在应用程序中生成然后填充的。或者它被下载了。你应该在SD卡上的其他文件夹中寻找它,也许... - Phantômaxx
不,我是在问,例如我们使用WhatsApp、微信或其他应用程序时,我们提取数据时无法获取数据库文件吗? - prabhakaran
WhatsApp自动生成其数据库,就像大多数应用程序一样。在这种情况下,它也是加密的,以保护隐私。 - Phantômaxx
2个回答

6

实际使用的数据库不会存储在APK中,它需要在可写位置中。通常情况下,它位于应用程序数据目录下的databases文件夹中,例如:/data/data/package.name/databases

许多应用程序通过代码动态生成它们的数据库。一些应用程序在资产中提供了预填充数据库,但即使是它们在使用之前也需要将其复制到可写位置。


例如,我们正在使用WhatsApp、微信或其他应用程序。然后我们提取数据,但是我们无法获得数据库文件? - prabhakaran
1
通常情况下,您不应该阅读其他应用程序的数据库。操作系统有级别的保护措施来防止您这样做 - 您需要 root 或者一个权限过于宽松的数据库文件模式的应用程序。此外,在 Stack Overflow 上进行反向工程应用程序有些边缘话题 - 我们更感兴趣的是在此构建新应用程序,而不是翻转现有的应用程序。 - laalto

1
在某些情况下,开发人员可能会从 MS Excel 表格/文本文件/SQLite 中加载数据。如果是这种情况,那么这些文件将位于 res/raw 文件夹下。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接