記一次微信數據庫解密過程


一、解密實踐流程

1.對手機進行root授權

2.獲取手機IMEI(MEID)碼

3.獲取微信的uin號

4.將IMEI(MEID)+uin進行MD5,取其前7位(小寫)

5. 使用對EnMicroMsg.db解密(筆者使用的是sqlcipher這個工具)

下面來具體說說每一個步驟和相關的知識基礎:

1)對手機進行root授權這一步驟是很重要的,針對安卓系統,有很多root授權工具,比如刷機精靈、Kingroot等,我在測試過程中使用的是360超級root(針對高版本的安卓機可能會存在授權問題,但不是本文的重點),此外,在成功獲得手機root權限后,也要給相應的應用授權,這里要找到比較有效的搜索文件的工具(筆者使用的RE文件管理器這個文件搜索工具),不然是沒辦法找到微信的配置權限文件和數據庫文件的,這一步如果不成功,后續則無法進行,授權截圖如下:

記一次微信數據庫解密過程

使用RE文件管理器,找到關鍵文件:

默認安裝微信的話,其路徑為:

數據庫文件:

data/data/com.tencent.mm/MicroMsg/長串字母文件夾/EnMicroMsg.db;

配置文件:

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

記一次微信數據庫解密過程記一次微信數據庫解密過程

2)在其他網絡文章上大部分說的是解密過程中使用的是IMEI號,我在實踐測試的過程中是使用的MEID解密的,筆者猜測可能和微信的版本有關系。

獲取方式有多個

①簡單粗暴的方法:有些可拆卸的電池,挖開外殼,里面可以看到相應的IMEI(MEID)號

② 在撥號鍵盤上輸入“*#06#”:

記一次微信數據庫解密過程

3)微信uin就是user information,是微信用戶信息識別碼,可以認為是微信用戶身份標識,每個用戶都是不一樣的,其獲取方式在此筆者提供兩種:

①使用瀏覽器自帶抓包工具(搜索)可查看

記一次微信數據庫解密過程

②從第一步獲取的微信的配置文件中獲取

記一次微信數據庫解密過程

4)使用工具對字符串進行MD5運算,取其前7位作為最終的解密密碼

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

記一次微信數據庫解密過程

得到相應的解密密碼:4abf0ca(小寫)

5)使用上述得到的密碼對EnMicroMsg.db解密

記一次微信數據庫解密過程

輸入密碼后,最終得到:

記一次微信數據庫解密過程

聊天記錄保存在message表中,將其導出后可以看到詳細的聊天內容:

記一次微信數據庫解密過程

二、源碼分析為何是這樣的字符串組合構成了密碼

1. 前面是實現的過程,但是如何查看微信數據庫的加密方式呢,當然是分析其源碼(逆向)

 雖然微信的apk做了一定的加固,但是並不影響分析數據庫享密碼組成的邏輯,筆者寫這篇文章只是想交流思路,並無其他惡意,下面簡單談一下逆向的思路:

工具准備:

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

2)靜態分析工具

https://github.com/skylot/jadx (編譯運行)

3)動態調試工具(Android studio)

記一次微信數據庫解密過程

2. 反編譯weixin.apk:

1)解壓weixin.apk,將classes.dex拷貝到dex2jar工具包下(dex2jar工具原理讀者可以自行網上查閱相關介紹)

記一次微信數據庫解密過程

2)使用dex2jar命令生成相應的jar包,然后進行源碼分析:

記一次微信數據庫解密過程

3. 找到關鍵的代碼分析和密碼組成原理:

記一次微信數據庫解密過程記一次微信數據庫解密過程記一次微信數據庫解密過程從上面的源碼可以看出,微信的加密數據庫的解密密碼是由“設備的IMEI(MEID)+用戶的uin,進行MD5,然后取其前7位小寫字母”構成的。

三、總結

上述具體解密過程我自己有制作一段簡單的視頻,有興趣的讀者可以與我聯系。特此提出:本文目的只是想交流一下自己初探加密數據庫的心得,有不妥的地方還請大家手下留情,也希望熱愛手機取證、計算機取證的小伙伴我們能多多交流!!

*本文作者:西紅柿炒雞蛋bb,本文屬FreeBuf原創獎勵計划,未經許可禁止轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM