<input id="eiiko"></input>
<menu id="eiiko"><blockquote id="eiiko"></blockquote></menu>
  • <bdo id="eiiko"><samp id="eiiko"></samp></bdo>
  • 记一次微信数据库解密过程

    2019-02-13 624870人围观 ,发现 25 个不明物体 新手科普终端安全

    *本文作者:西红柿炒鸡蛋bb,本文属FreeBuf原创奖励计划,未经许可禁止转载。

    本文主要记录手动解密微信数据库的过程,用于技术讨论和交流,思路仅供参考,严禁用于不法用途。

    一、解密实践流程

    1.对手机进行root授权

    2.获取手机IMEI(MEID)码

    3.获取微信的uin号

    4.将IMEI(MEID)+uin进行MD5,取其前7位(小写)

    5. 使用对EnMicroMsg.db解密(笔者使用的是sqlcipher这个工具)

    下面来具体说说每一个步骤和相关的知识基础:

    1)对手机进行root授权这一步骤是很重要的,针对安卓系统,有很多root授权工具,比如刷机精灵、Kingroot等,我在测试过程中使用的是360超级root(针对高版本的安卓机可能会存在授权问题,但不是本文的重点),此外,在成功获得手机root权限后,也要给相应的应用授权,这里要?#19994;奖?#36739;?#34892;?#30340;搜索文件的工具(笔者使用的RE文件管理器这个文件搜索工具),不然是没办法?#19994;?#24494;信的配置权限文件和数据库文件的,这一步如果不成功,后续则无法进行,授权截图如下:

    记一次微信数据库解密过程

    使用RE文件管理器,?#19994;?#20851;键文件:

    默认安装微信的话,其路径为:

    数据库文件:

    data/data/com.tencent.mm/MicroMsg/长串字母文件夹/EnMicroMsg.db;

    配置文件:

    data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml

    记一次微信数据库解密过程记一次微信数据库解密过程

    2)在其他网络文章上大部分说的是解密过程中使用的是IMEI号,我在实践测试的过程中是使用的MEID解密的,笔者猜测可能和微信的版本有关系。

    获取方式有多个

    ①简单粗暴的方法:?#34892;?#21487;拆卸的电池,挖开外壳,里面可以看到相应的IMEI(MEID)号

    ② 在拨号键盘上输入“*#06#?#20445;?/p>

    记一次微信数据库解密过程

    3)微信uin就是user information,是微信用户信息识别码,可以认为是微信用户身份标识,每个用户都是不一样的,其获取方式在此笔者提供两种:

    ①使用浏览器?#28304;?#25235;包工具(搜索)可查看

    记一次微信数据库解密过程

    ②从第一?#20132;?#21462;的微信的配置文件中获取

    记一次微信数据库解密过程

    4)使用工具对字符串进行MD5运算,取其前7位作为最终的解密密码

    MEID号(14位)+uin(10位),即输入24位要hash的字符,得到加密后的MD5值,如:

    记一次微信数据库解密过程

    得到相应的解密密码:4abf0ca(小写)

    5)使用上述得到的密码对EnMicroMsg.db解密

    记一次微信数据库解密过程

    输入密码后,最终得到:

    记一次微信数据库解密过程

    聊天记录保存在message表中,将其导出后可以看到详细的聊天内容:

    记一次微信数据库解密过程

    二、源码分析为何是这样的字符串组合构成了密码

    1. 前面是实现的过程,但是如何查?#27425;?#20449;数据库的加密方式呢,?#27604;?#26159;分析其源码(逆向)

     虽然微信的apk做了一定的加固,但是并不影响分析数据库享密码组成的逻辑,笔者写这篇文?#36718;?#26159;想交流思路,并无其他恶意,下面简单谈一下逆向的思路:

    工具准备:

    1)安卓版本的微信apk (root手机)

    2)静态分析工具

    https://github.com/skylot/jadx (编译运行)

    3)动态调试工具(Android studio)

    记一次微信数据库解密过程

    2. 反编译weixin.apk:

    1)解压weixin.apk,将classes.dex?#22870;?#21040;dex2jar工具包下(dex2jar工具原理读者可以自行网上查阅相关介绍)

    记一次微信数据库解密过程

    2)使用dex2jar命令生成相应的jar包,然后进行源码分析:

    记一次微信数据库解密过程

    3. ?#19994;?#20851;键的代码分析和密码组成原理:

    记一次微信数据库解密过程记一次微信数据库解密过程记一次微信数据库解密过程?#30001;?#38754;的源码可以看出,微信的加密数据库的解密密码是由“设备的IMEI(MEID)+用户的uin,进行MD5,然后取其前7位小写字母”构成的。

    三、总结

    上述具体解密过程我自己有制作一段简单的视频,?#34892;?#36259;的读者可以与我联系。特此提出:本文目的只是想交流一下自己初探加密数据库的心得,有不妥的地?#20132;?#35831;大家手下留情,也希望热爱手机取证、计算机取证的小伙伴我们能多多交流!!

    *本文作者:西红柿炒鸡蛋bb,本文属FreeBuf原创奖励计划,未经许可禁止转载。

    这些评论亮了

    • Sphinx (9级) 这?#19968;?#22826;?#20142;耍?#20160;么都没写 回复
      方法跟这边有什么区别吗:http://www.66984006.com/articles/terminal/107801.html
      另外由于加密算法就没变过,所以数据库解密的方法已经很完善了。有自动化获取imei和uin算出密码解密数据库的工具,可以查看记录,或者进行统计,甚至可以导出成可读的html格式(其中包括?#35745;?#35821;音、和部分表情)
      项目在这边 https://github.com/ppwwyyxx/wechat-dump
      )22( 亮了
    发表评论

    已有 25 条评论

    取消
    Loading...

    填写个人信息

    姓名
    电话
    邮箱
    公司
    行业
    职位
    css.php 天津11选5开奖
    <input id="eiiko"></input>
    <menu id="eiiko"><blockquote id="eiiko"></blockquote></menu>
  • <bdo id="eiiko"><samp id="eiiko"></samp></bdo>
  • <input id="eiiko"></input>
    <menu id="eiiko"><blockquote id="eiiko"></blockquote></menu>
  • <bdo id="eiiko"><samp id="eiiko"></samp></bdo>
  • 双色球168复式多少钱 一尾中特十1码 广东快乐十分推荐任3 山东时时彩 时时彩山东十一选五走势图 宁夏11选5玩法开奖时间 辽宁11选5遗漏 体彩幸运赛车开奖号码 今天河南快3开奖结果 七星彩走势图2 广西淘宝快3走势图表官网 火爆4生肖中特 香港赛马会官方唯一指定 河北十一选五漏值 近100期河南22选5福彩走势图