赞
踩
参考:https://www.jianshu.com/p/65bf04dc7b18
Sharedpreferences是Android平台上一个轻量级的存储类,用来保存应用程序的各种配置信息,每个Sharedpreferences对象,本质上对应一个以“键-值”对的方式保存数据的xml文件。
Android 五种主要的数据存储方式:
- SharedPreferences:以Map形式存放简单的配置参数;
- ContentProvider:将应用的私有数据提供给其他应用使用;
- 文件存储:以IO流形式存放,可分为手机内部和手机外部(sd卡等)存储,可存放较大数据;
- SQLite:轻量级、跨平台数据库,将所有数据都是存放在手机上的单一文件内,占用内存小;
- 网络存储:数据存储在服务器上,通过连接网络获取数据;
参考:https://www.jianshu.com/p/65bf04dc7b18
读写SharedPreferences,需要通过SharedPreferences.edit()获取内部接口Editor对象,通过Editor对象完成操作。
//步骤1:创建一个SharedPreferences对象
SharedPreferences sharedPreferences= getSharedPreferences("data",Context.MODE_PRIVATE);
//步骤2: 实例化SharedPreferences.Editor对象
SharedPreferences.Editor editor = sharedPreferences.edit();
//步骤3:将获取过来的值放入文件
editor.putString("name", “Tom”);
editor.putInt("age", 28);
editor.putBoolean("marrid",false);
//步骤4:提交
editor.commit();
SharedPreferences sharedPreferences= getSharedPreferences("data", Context .MODE_PRIVATE);
String userId=sharedPreferences.getString("name","");
editor.remove("name");
editor.commit();
editor.clear();
editor.commit();
参考:https://blog.csdn.net/Judy889/article/details/84912056
一般的SharePreference保存在/data/data/[package name]/shared_prefs
目录,
但通过createDeviceProtectedStorageContext建立的SharePreference保存在/data/user_de/0/[package name]/shared_prefs
目录。
例如如下代码:
private s(Context arg5) {
this.a = Build.VERSION.SDK_INT >= 24 ? arg5.createDeviceProtectedStorageContext().getSharedPreferences("safetydetect", 0) : arg5.getApplicationContext().getSharedPreferences("safetydetect", 0);
this.b = this.a.edit();
}
getSharedPreferences("safetydetect", 0)
决定了,sp对象从名为com.huawei.hms.safetydetect_safetydetect.xml
的文件中读取数据createDeviceProtectedStorageContext()
,则xml文件保存在/data/user_de/0/com.huawei.hwid/shared_prefs
getApplicationContext()
,则xml文件保存在/data/data/com.huawei.hwid/shared_prefs
当我们找不到SharePreference保存在哪,可以通过这个方法获取其路径
final File source = deviceContext.getSharedPreferencesPath(PreferenceManager.getDefaultSharedPreferencesName(deviceContext));String absolutePath = source.getAbsolutePath();
cp -r /data/user_de/0/com.huawei.hwid/shared_prefs /data/local/tmp
chmod -R 777 /data/local/tmp/shared_prefs/
adb pull /data/local/tmp/shared_prefs
参考:https://www.jianshu.com/p/fbea62fc13c2
frida hook android.content.SharedPreferences
或者android.content.SharedPreferences.Editor
,实测有时可能hook不到
建议hook 内部api android.app.SharedPreferencesImpl$EditorImpl
var sp = Java.use("android.app.SharedPreferencesImpl$EditorImpl");
sp.putString.overload('java.lang.String', 'java.lang.String').implementation = function(arg1,arg2)
{
console.log("[SharedPreferencesImpl] putString -> key: "+arg1+" = "+arg2);
return this.putString(arg1,arg2);
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。