参考资料:https://blog.csdn.net/weixin_47401101/article/details/130308187
APK (Android application package)指 Android 应用程序包,是 Android 系统中的一种文件格式,用来对安卓应用程序的文件进行打包。APK 文件包含了应用程序的所有文件, 包括:
- assets:静态资源资源文件(图片,视频等),这个文件夹下不会被编译。
- lib:.so库,系统库,自己打包的库。有的把加密/token生成方式放在.so文件里
- META-INF:签名信息。
- res:资源文件(静态文本,图片,关键资源) 汉化,会被编译。 比如汉化
- AndroidManifest.xml:配置信息(关键),举例修改权限
- classes.dex:android dalvik虚拟机可执行文件
- resources.arsc:资源索引/对应文件
1、静态分析,通过jadx或者jeb,jadx比较推荐 ,这个可以全局搜索,可以自动编译; 2、通过静态分析的话,要注意manifest.xml文件,这个类似于入口文件,里面有包名packename,有user-permission,可以通过关键词MAIN、LAUNCHER,找到上一层acivity,找到主函数的入口地址,进一步的分析就要在主函数中进行了。
通常情况下安卓设备的短信/彩信数据都储存在以下文件夹中:
/data/data/com.android.providers.telephony/databases/mmssms.db
Mmssms.db为一个SQLite数据库,使用SQLite查看器都可以读取
/Basic/sms/sms.db
![[Pasted image 20230805193241.png]]
/data/data/com.sec.android.provider.logsprovider/databases/logs.dbShared Preferences是Android中最简单的数据存储方式之一,用于存储轻量级的键值对。它适用于保存简单的配置信息和用户首选项。Shared Preferences是基于XML文件的,对于少量结构化数据非常方便。但是,不适合存储大量复杂数据。
- 轻量级的键值对存储
- 适用于保存用户设置和首选项
Android应用可以在内部存储中创建和保存私有文件。这些文件默认只能被应用本身访问,其他应用无法读取这些数据。内部存储对于保护敏感数据非常有用。你可以使用Java的File API来读写这些文件。
- 私有文件存储
- 适用于保护敏感数据
- 内部存储的路径通常类似于:/data/data/<package_name>/
Android允许应用在外部存储(如SD卡)上读写数据。这对于存储大量文件或共享文件给其他应用或用户非常有用。需要注意的是,外部存储是公开的,其他应用和用户都可以访问这些文件,因此要谨慎处理敏感数据。
- 外部存储器上的读写
- 适用于存储大量或共享文件
SQLite是一种轻量级的嵌入式数据库,在Android中被广泛使用。它提供了一个结构化的方式来存储和管理大量的复杂数据。Android提供了SQLiteOpenHelper类和ContentProvider API来简化数据库的创建和操作。
- 轻量级嵌入式数据库
- 适用于大量结构化数据
- 允许应用之间共享数据
- 实现跨应用数据共享
Room是Android提供的一个数据库访问库,它是对SQLite的抽象封装,简化了数据库操作。Room使用注解来定义实体和数据库访问对象(DAO),并在编译时生成代码,减少了手动编写繁琐的数据库操作代码。
- 对SQLite的抽象封装
- 简化数据库操作
应用可以将数据存储在远程服务器上,通过网络进行访问和同步。这通常涉及与服务器进行HTTP通信,以便上传和下载数据。
- 存储在远程服务器上的数据
- 通过网络进行访问和同步
对于敏感数据,可以使用文件加密技术来保护数据安全。Android提供了各种加密库和API,可以帮助你对数据进行加密和解密,以防止数据泄露。
- 保护敏感数据的安全
- 使用加密库和API进行加密
![[Pasted image 20230805194026.png]]
擦除data分区就相当于执行恢复出厂设置 ![[Pasted image 20230805194046.png]]
在Android设备中,SD卡(Secure Digital Card)通常是指外部存储设备,用于扩展设备的存储容量。SD卡通常被分成多个分区,每个分区用于不同的目的。以下是一些常见的SD卡分区及其路径的介绍:
- 外部存储路径(可移除SD卡):
- /mnt/sdcard 或 /storage/emulated/0:在旧版Android系统中,外部存储的根目录通常位于 /mnt/sdcard 或 /storage/emulated/0 路径下。这是可移除SD卡的挂载路径,它指向SD卡的根目录。然而,值得注意的是,从Android 4.2开始,Google引入了多用户功能,这些路径实际上指向了每个用户的私有存储空间。
- 外部存储路径(内置SD卡):
- /storage/emulated/legacy 或 /mnt/sdcard/legacy:对于一些较早的设备,其内置的SD卡(可能不可移除)的根目录可以通过这些路径访问。这些路径在某些设备上可以找到,但并不适用于所有设备。
- 外部存储的其他路径:
- /storage/emulated/<user_id>:从Android 4.2开始,外部存储路径被修改为指向每个用户的私有存储空间。<user_id> 是用户的ID标识,不同用户的ID不同,每个用户拥有自己的私有存储空间。
- 其他常见路径:
- /storage/sdcard1 或 /mnt/extSdCard:在一些设备上,可能会有第二个SD卡槽,称为"外置SD卡",其挂载路径可能为 /storage/sdcard1 或 /mnt/extSdCard。
- /storage/UsbDriveA 或 /mnt/usb_storage:对于支持USB OTG(On-The-Go)的设备,连接外部USB存储设备后,其路径可能会出现在 /storage/UsbDriveA 或 /mnt/usb_storage。

