要先批评一下微信,居然用开源的数据库加密方式,这不是一破解一个准吗?
如果你的模拟器或者真机已经获得了root权限,就可以直接将记录聊天记录的数据库文件拷贝出来,数据库文件具体存放位置如下:
在/data/data/中:

(题外话:android原生的模拟器root起来很复杂,推荐一款第三方模拟器:Bluestacks,很方便)

我们拿到EnMicroMsg.db后,用常用的数据库管理软件打开,发现EnMicroMsg.db被加密了,但是密码生成规则很简单,具体如下:
(手机IMEI + 微信uin )取MD5的前7位(微信uin获取)
手机的IMEI获取:手机拨号盘输入:*#06#
但是即使算出来解密密码,我们仍发现用刚才使用的SQLite数据库管理软件是打不开的。因为其用的是SQLCipher开源库提供的加密解密算法,故在网上下载SQLCipher.exe这个软件(地址:http://pan.baidu.com/s/1qWPr30w),打开.db文件时,输入计算出来的密码后,就可以打开EnMicroMsg.db文件了:

上面提到了SQLCipher是一个提供数据库文件加密解密功能的第三方开源库,我们先来访问以下他们的官网看个究竟:
https://www.zetetic.net/sqlcipher/open-source/
我们惊喜的发现,现在SQLCipher提供了Android操作系统的开源库,源码在Github上可以下载获得,但是我尝试下载了Github上的工程,编译的时候遇到了很多问题,导致最终没有编译成功。所以建议大家下载如下图所示的开源库压缩包:

你也可以直接点击这里下载。

解压下载的压缩包,其目录如下图所示:

下面涉及到Android工程创建、导入SQLCipher开源库等工作:
创建Android工程就不详细说了,创建完工程后,直接将sqlcipher-for-android-v3.2.0文件夹中的内容全部拷贝到android工程中即可:

接下来的步骤也很关键:
右键工程,Build Path → Configure Build Path,按照下图所示添加相应的jar包,删除android自有库:

最后在程序中加入读取加密数据库的关键代码即可:

public void readWeChatDatabase() {

    SQLiteDatabase.loadLibs(this);   String password = "XXXXXXX";       File databaseFile = getDatabasePath("/data/data/com.tencent.mm/MicroMsg/47d58c79e692e212XXXXXXXXXXXXX/EnMicroMsg.db");  //来自www.oicqzone.com   //File databaseFile = getDatabasePath("EnMicroMsg.db");   eventsData = new myDataHelper(this);   SQLiteDatabaseHook hook = new SQLiteDatabaseHook(){   public void preKey(SQLiteDatabase database){   }   public void postKey(SQLiteDatabase database){   database.rawExecSQL("PRAGMA cipher_migrate;");  //最关键的一句!!!   }   };   try {   SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(databaseFile, "XXXXXXX(密码)", null, hook);          Cursor c = db.query("message", null, null, null, null, null, null);   while (c.moveToNext()) {     int _id = c.getInt(c.getColumnIndex("msgId"));     String name = c.getString(c.getColumnIndex("content"));     Log.i("db", "_id=>" + _id + ", content=>" + name);     }     c.close();   db.close(); } catch (Exception e) {}
}

程序很简答,password即为数据库的加密密码,databaseFile为数据库文件路径,database.rawExecSQL(“PRAGMA cipher_migrate”)这句最为关键,原因如下:
现在SQLCipher for Android已经是3.X版本了,而微信居然还停留在2.X时代,所以这句话是为了能够用3.X的开源库兼容2.X的加密解密方法,如果不加这句话,是无法对数据库进行解密的。
(题外话:SQLCipher的功能确实相当强大,我这里介绍的只是冰山一角,更多的功能大家可以通过其官网或者Github中提供的工程代码进行探究)
最后展示一下程序运行效果,从Logcat信息可以看到,我们成功读取了微信的EnMicroMsg.db文件中的message数据表:

当然,我所做的工作有着明显的不足,即需要先通过各种人工方式计算出数据库解密密码,然后再进行.db文件的解密。有兴趣的网友可以尝试直接在程序中取得IMEI与微信uin(这个应该是难点),然后MD5取前7位,最后用算出的解密码对数据库进行解密。

利用Android手机破解微信加密数据库EnMicroMsg.db文件相关推荐

  1. 直接利用Android手机破解微信加密数据库EnMicroMsg.db

    ※首先,简单介绍一下微信加密数据库EnMicroMsg.db的破解方法: 要先批评一下微信,居然用开源的数据库加密方式,这不是一破解一个准吗... 如果你的模拟器或者真机已经获得了root权限,就可以 ...

  2. 微信数据库最新的解密方式,使用C++代码解密微信加密数据库信息!

    原文转载于:https://blog.csdn.net/jiangwei0910410003/article/details/79436956 一.知识回顾 最近有人找我弄微信数据库解密的东西,其实这 ...

  3. 使用C++代码解密微信加密数据库信息!

    一.知识回顾 最近有人找我弄微信数据库解密的东西,其实这个现在网上都公开了,我在很早之前就静态分析过微信数据库加密算法,不了解的同学可以查看这里:Android中静态方式破解微信数据库加密密码,所以现 ...

  4. [html] android手机的微信H5弹出的软键盘挡住了文本框,如何解决?

    [html] android手机的微信H5弹出的软键盘挡住了文本框,如何解决? window.addEventListener("resize", function () {if ...

  5. Android手机之间不消耗流量互传文件

    Android手机之间不消耗流量互传文件 这是一个我们做的项目,已在Github开源,点击链接查看. Android手机之间不消耗流量互传文件 安卓面对面文件快传

  6. 如何查看sqlite数据库的 .db文件中的表的内容数据

    在使用 qt 的sqlite 数据的时候,对于创建的数据库的 .db 文件的内容的查看我们可以按照下面的步骤安装工具进行查看 下载所需的sqlite 查看工具 下载:链接:https://pan.ba ...

  7. Android逆向_微信本地数据库解密与删除聊天记录恢复完全教程

    # 前言 在电子数据取证过程中,对微信本地数据库的解密.提取与恢复是非常重要的工作内容.本文以华为mate系列手机和最新版的微信(7.0.3)为例,通过总结互联网上已经发表的文章经验,主要针对**华为 ...

  8. 破解微信本地数据库,无法找回删除的聊天记录

    [说明:操蛋的微信从4.0后本地数据库都加密了,密码是IMEI+UIN取MD5 32位小写加密前7作为密码]  [数据库文件请ROOT后用RE浏览器得到] [UIN 文件路径:/data/data/ ...

  9. Android手机导出微信聊天记录

    如果android手机上有重要的微信聊天记录,一定有备份的需要,可参考以下方法: 1.首先需要您的android手机支持root,用可root的"手机资源管理器"进入目录拷贝微信数 ...

最新文章

  1. Leetcode 113. 路径总和 II 解题思路及C++实现
  2. 通过GPG非对称加密工具验证ECharts发布版本实例演示,win10下Gnu Privacy Guard工具的安装和使用方法
  3. 高中计算机室名言,高中教室励志标语名言
  4. 递归方法计划销售订单的计划物料成本
  5. 阿里云服务网格 ASM 发布新功能:提供更精细化的服务治理能力
  6. BFS简单搜索--POJ 2243
  7. CF436F Banners(分块/凸包/单调队列)
  8. (94)Vivado时序约束TCL命令-get_nets
  9. ClickOnce Cannot download the application解决方法
  10. 完美解决VB中int to short溢出问题
  11. 微信小程序跳过第三方的_微信小程序工具 第三方平台
  12. MySql学习笔记【二、库相关操作】
  13. 解雇IE补丁操作方法
  14. Zigbee协议栈应用(一)——Zigbee协议栈介绍及简单例子
  15. 如何快速出机械工程图
  16. 问卷分析SPSS+AMOS实证步骤
  17. 集成电路CAD习题及答案
  18. c# 使用正则表达式 提取章节小说正文全本篇
  19. 万洲金业:黄金ETF如何影响黄金价格?
  20. Win7怎么卸载微软输入法?

热门文章

  1. Java脚本:评委打分
  2. 【平面图理论】平面图学习笔记
  3. OsWatcher 使用详解
  4. 买蓝牙耳机什么牌子好用?国产蓝牙耳机十大排名
  5. 提升你的外国服务器网站国内访问速度~
  6. 2021-07-18 三种视图的dicom文件的生成
  7. 设置编程软件的背景颜色
  8. 支付宝、微信、QQ 收款二维码三合一
  9. 某cpws - ciphertext加密与数据解密
  10. 斩获微软offer后,我总结出这10个面试必备技巧(五星干货)