🗒️安卓XML持久化

把内存中的数据永久的保存到硬盘上(磁盘上)过程称之为持久化
安卓XML持久化
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 可以通过 SharedPreferencesputString 方法保存到 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 的工作原理

    • 数据存储:当应用调用 SharedPreferencesedit() 方法并提交数据时(使用 commit()apply()),这些数据会被序列化为 XML 格式,并保存到应用的私有目录中,通常是 /data/data/<包名>/shared_prefs/
    • 数据检索:当应用需要读取这些数据时,系统会从相应的 XML 文件中解析出存储的键值对。
     

    安卓应用中的 XML 持久化示例

    假设我们有一个安卓应用,该应用允许用户登录,并在登录成功后保存用户的登录状态(例如一个身份验证令牌)以便下次自动登录。

    在安卓应用中实现 XML 持久化

    1. 登录并获取令牌:用户登录后,后端返回一个身份验证令牌。
      1. 保存令牌:应用使用 SharedPreferences 来保存这个令牌。
        1. 自动登录:当应用重启时,它检查 SharedPreferences 以确定用户是否已登录。
          1.  

        逆向工程中的 XML 持久化

        在逆向工程中,理解应用如何使用 XML 持久化是关键的,尤其是当涉及到安全性和数据管理时。

        逆向工程的步骤

         
        1. 反编译 APK:使用 apktool 对 APK 进行反编译。
          1. 分析 SharedPreferences 的使用:在反编译的代码中,查找 SharedPreferences 的使用。通常,这些代码位于登录相关的类或活动中。
            1. 检查 XML 文件:在 /data/data/<包名>/shared_prefs/ 目录下查找 sp_token.xml 文件。
              1. 动态分析:运行应用,观察登录和重启行为。使用 logcat 监控可能的日志输出。

              安全分析

              • 令牌安全性:检查令牌是否以安全的方式存储。如果存储的令牌未加密,则可能存在安全风险。
              • 逆向修改:考虑是否可以通过修改 SharedPreferences 文件来改变应用行为,例如绕过登录。

              🤗 总结归纳

              总结文章的内容

              📎 参考文章

              • 一些引用
              • 引用文章
               
              💡
              有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
              上一篇
              关于安卓hook框架Frida
              下一篇
              OKHTTP拦截器
              Loading...