亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

基于 Android 讀取微信本地 DB 數據 | 思維原理及技術分析

標簽:
Android

前言

该移动端软件基于Android开发,是一个解析微信数据信息(包括微信个人资料、联系人、聊天记录等)并重装报文同步至服务端的一款应用。其实实属公司业务需要而开发的一个小玩意,Android笑O(∩_∩)O哈哈

应用的原理思维分析:首先拿到微信应用的本地SQLite数据库文件( 无网络的情况下可以显示之前的聊天记录,因而本地必有缓存数据的载体、G一下 额 是本地数据 ),分析到本地缓存以及找到文件的路径知识第一步,第二部需要秘钥进一步打开db文件,找到密码是很简单的事情( 再此感谢前人贡献 ) ,可以通过相关的信息计算得到,肯定会有人问:万一微信将其改了那此方案此不是作废了吗?,?既然微信凭其技术实力改变了,那也没办法呀,但是我相信腾讯不会轻而易举的去做这一改动的,为何呢?这样一改动的话,容易造成对之前版本不兼容。既然db文件找到了以及秘钥也有了,最后一步就是理解与猜测数据表的结构与关系去做业务的开发。

核心技术

  • uin理解与获取

    uin简单而言就是微信登录的识别号,设备必须有登录的历史才有。uin是如何获取的呢?

    # uid在aunt_info_key_prefs.xml文件里面
    # 具体的路径为"/data/data/com.tencent.mm/shared_prefs/auth_info_key_prefs.xml"# uin的值为_auth_uin标签的值,如下是实例文件,可借助jsoup依赖库即可解析值
  • imei码

    移动设备的唯一编码,双卡双待的会有两个。与数据库秘钥息息相关。

    public static String imei(Context context) {    try {      //实例化TelephonyManager对象
          TelephonyManager telephonyManager = (TelephonyManager)  context.getSystemService(Context.TELEPHONY_SERVICE);
          String imei = telephonyManager.getDeviceId();      if (imei == null) {
              imei = "";
          }      return imei;
        } catch (Exception e) {
          e.printStackTrace();
        }    return null;
    }
  • 数据库路径

    # 路径为"/data/data/com.tencent.mm/MicroMsg/" + md5("mm" + uin) + "/EnMicroMsg.db";
  • 数据库的密码

    秘钥为emei+uinmd5截取前七位再转大写即可获取。

    md5(imei + uin))).substring(0, 7).toLowerCase()
  • 数据库读写操作

    import net.sqlcipher.Cursor;import net.sqlcipher.SQLException;import net.sqlcipher.database.SQLiteDatabase;import net.sqlcipher.database.SQLiteDatabaseHook;
    
    SQLiteDatabase.loadLibs(context);
    SQLiteDatabaseHook hook = new SQLiteDatabaseHook() {  @Override
        public void preKey(SQLiteDatabase database) {
    
        }    @Override
        public void postKey(SQLiteDatabase database) {
            database.rawExecSQL("PRAGMA cipher_migrate;"); // 兼容2.0的数据库
        }
    };
    String file = "数据库备份后的文件路径;
    String password = "秘钥";
    SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(file, password, null, hook);
    ... ...
  • 监控渲染图

目的为了大数据分析、精准营销、自动化方案推送~笑


webp

效果图



作者:AlicFeng
链接:https://www.jianshu.com/p/712d400010d1


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消