status
Published
type
Post
category
技术分享
date
Jul 2, 2021
slug
xmlLasting
summary
把内存中的数据永久的保存到硬盘上(磁盘上)过程称之为持久化
tags
安卓
password
icon
什么是持久化?:把内存中的数据永久的保存到硬盘上(磁盘上)过程称之为持久化
XML持久化主要是指使用 XML 文件存储数据的过程,而在安卓开发中,这通常通过 SharedPreferences 实现。
SharedPreferences 和 XML 持久化
SharedPreferences 是安卓提供的一种轻量级的数据存储机制,用于存储少量的键值对。虽然它的 API 是以键值对的形式呈现的,但在很多安卓版本中,其背后实际上是通过 XML 文件进行数据持久化的。这些 XML 文件通常存储在/data/data/<包名>/shared_prefs/目录下。
用例分析
以您提供的示例为例:
- 保存数据:当用户登录成功后,后端返回一个包含
token的数据,这个token可以通过SharedPreferences的putString方法保存到 XML 文件中。这样,即使应用重启,token也会保留下来。
- 删除数据:如果需要注销或删除
token,可以使用remove方法。
- 读取数据:当应用启动时,可以通过
getString方法检索token。如果token存在,用户可能无需再次登录。
逆向分析
- 识别 XML 持久化:在进行 APK 的逆向工程时,通过检查
shared_prefs目录下的 XML 文件,你可以识别应用是如何处理和持久化数据的。这包括识别出应用保存了哪些数据,以及数据的存储格式。
- 安全性分析:检查这些 XML 文件,可以帮助识别是否有敏感信息(如用户
token)被存储,以及这些信息是否有适当的加密。存储未加密的敏感信息可能会导致安全漏洞。
- 修改和自定义行为:逆向工程也可能涉及修改这些 XML 文件以改变应用行为,比如改变配置设置或绕过某些限制。
- 我们在逆向时,经常看到在app刚启动时,刚登录的时候,生成一些 秘钥串,后端返回的加密串,它会保存到xml中
移动端保存下来的信息如何查找
只要app写入到了xml中,我们可以找到这个文件及写的内容 像从浏览器中把cookie 扣出来是一样的
安卓中的 XML 持久化
基础概念
- XML 持久化:XML 持久化是指将数据以 XML 的格式保存到设备存储中,从而使得数据在应用重启后仍然可以被检索和使用。在 Android 中,这通常是通过
SharedPreferences实现的。
- SharedPreferences:这是安卓提供的一种简单的键值存储机制。虽然它被设计来存储轻量级的数据,但它背后通常使用 XML 文件作为存储介质。
SharedPreferences 的工作原理
- 数据存储:当应用调用
SharedPreferences的edit()方法并提交数据时(使用commit()或apply()),这些数据会被序列化为 XML 格式,并保存到应用的私有目录中,通常是/data/data/<包名>/shared_prefs/。
- 数据检索:当应用需要读取这些数据时,系统会从相应的 XML 文件中解析出存储的键值对。
安卓应用中的 XML 持久化示例
假设我们有一个安卓应用,该应用允许用户登录,并在登录成功后保存用户的登录状态(例如一个身份验证令牌)以便下次自动登录。
在安卓应用中实现 XML 持久化
- 登录并获取令牌:用户登录后,后端返回一个身份验证令牌。
- 保存令牌:应用使用
SharedPreferences来保存这个令牌。
- 自动登录:当应用重启时,它检查
SharedPreferences以确定用户是否已登录。
逆向工程中的 XML 持久化
在逆向工程中,理解应用如何使用 XML 持久化是关键的,尤其是当涉及到安全性和数据管理时。
逆向工程的步骤
- 反编译 APK:使用
apktool对 APK 进行反编译。
- 分析 SharedPreferences 的使用:在反编译的代码中,查找
SharedPreferences的使用。通常,这些代码位于登录相关的类或活动中。
- 检查 XML 文件:在
/data/data/<包名>/shared_prefs/目录下查找sp_token.xml文件。
- 动态分析:运行应用,观察登录和重启行为。使用
logcat监控可能的日志输出。
安全分析
- 令牌安全性:检查令牌是否以安全的方式存储。如果存储的令牌未加密,则可能存在安全风险。
- 逆向修改:考虑是否可以通过修改
SharedPreferences文件来改变应用行为,例如绕过登录。
🤗 总结归纳
总结文章的内容
📎 参考文章
- 一些引用
- 引用文章
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
Loading...


.png?table=block&id=8cbd9ef4-8c1c-4581-80f1-a15297380674&t=8cbd9ef4-8c1c-4581-80f1-a15297380674&width=1080&cache=v2)

