一、关于Android动态破解微信本地数据库(EnMicroMsg.db) 的步聚:
微信本地数据库的加密规则:1.root手机,以便获取su权限,以及修改微信目录的读写权限。
2.获取手机IMEI码 如141858783361415
3.获取当前登录微信账号的uin(存储在sp里面) ---shared_prefs/auth_info_key_prefs.xml -897688233
4.拼接IMEI和uin , 如141858783361415-897688233
5.将拼接完的字符串进行md5加密, md5(141858783361415-897688233,32) = a9dd62add3ddd41017c174ee1d382dc8
6.截取加完密的字符串的前七位(字母必须为小写),结果: a9dd62a
7.通过通过SQLCipher这个库来连接加密的数据库:compile 'net.zetetic:android-database-sqlcipher:3.5.4@aar' ,也可通过sqlcipher图形工具,通过这个工具,我们可以快速的查看微信的db文件里面有哪些表,每个表里面有哪些字段,然后我们就可以在代码中写出相应的sql语句来查询我们需要的数据了,sqlcipher的下载。常用库介绍:【rcontact】联系人表,【message】聊天消息表
-------------------
说明:可以准确的定位到uin对应的EnMicroMsg.db文件,MD5("mm"+auth_info_key_prefs.xml中解析出微信的uin码) 生成的md5就是EnMicroMsg.db所处的父级文件夹的名称如:mm-897688233:91c8a5c0e536486eff63cae774335bb2
二、一些注意事项
1.代码生成图片,放到相册,微信是直接识别不了,需要发送一个广播,另外图片放到Tencent/MicroMsg/Camera下面效果更好,如下面的代码所示:
public static void scanMediaFile(Context context, File imgFile){
MyLog.e(imgFile.getAbsolutePath());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//如果是4.4及以上版本
Intent mediaScanIntent = new Intent(
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri contentUri = Uri.fromFile(imgFile); //out is your output file
mediaScanIntent.setData(contentUri);
context.sendBroadcast(mediaScanIntent);
MyLog.e(Build.VERSION.SDK_INT+"\t方式1:"+imgFile.getAbsolutePath());
} else {
MyLog.e(Build.VERSION.SDK_INT+"\t方式2:"+imgFile.getAbsolutePath());
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,Uri.parse("file://" +imgFile.getAbsolutePath())));
}
}
public static boolean saveQRcodeFileToDCIM(Context context, String url){
Bitmap bitmap=createQRCodeBitmap(url);
if(bitmap!=null){
try {
String name="MyQRcode";
String parentPath="Tencent/MicroMsg/Camera";
File f = new File(Environment.getExternalStoragePublicDirectory(parentPath), name+".png");
saveBitmap(bitmap,f);
// context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(f))); //更新系统图库的方法
scanMediaFile(context, f);
MyLog.e("二维码生成功- ---"+f.getAbsolutePath());
return true;
}catch (Exception e){
}
}
return false;
}
1. http://blog.csdn.net/njweiyukun/article/details/54024442