※首先,簡單介紹1下微信加密數(shù)據(jù)庫EnMicroMsg.db的破解方法:
要先批評1下微信,竟然用開源的數(shù)據(jù)庫加密方式,這不是1破解1個準(zhǔn)嗎...
如果你的摹擬器或真機已取得了root權(quán)限,就能夠直接將記錄聊天記錄的數(shù)據(jù)庫文件拷貝出來,數(shù)據(jù)庫文件具體寄存位置以下:
在/data/data/中:
(題外話:android原生的摹擬器root起來很復(fù)雜,推薦1款第3方摹擬器:genymotion,很方便)
※我們拿到EnMicroMsg.db后,用經(jīng)常使用的數(shù)據(jù)庫管理軟件打開,發(fā)現(xiàn)EnMicroMsg.db被加密了,但是密碼生成規(guī)則很簡單,具體以下:
(手機IMEI + 微信uin )取MD5的前7位
手機的IMEI獲得:手機撥號盤輸入:*#06#
微信uin獲得:http://blog.csdn.net/yuanbohx/article/details/41280837
但是即便算出來解密密碼,我們?nèi)园l(fā)現(xiàn)用剛才使用的數(shù)據(jù)庫管理軟件是打不開的。由于其用的是SQLCipher開源庫提供的加密解密算法,故在網(wǎng)上下載SQLCipher.exe這個軟件,打開.db文件時,輸入計算出來的密碼后,就能夠打開EnMicroMsg.db文件了:
※上面提到了SQLCipher是1個提供數(shù)據(jù)庫文件加密解密功能的第3方開源庫,我們先來訪問以下他們的官網(wǎng)看個究竟:
https://www.zetetic.net/sqlcipher/open-source/
我們欣喜的發(fā)現(xiàn),現(xiàn)在SQLCipher提供了Android操作系統(tǒng)的開源庫,源碼在Github上可以下載取得,但是我嘗試下載了Github上的工程,編譯的時候遇到了很多問題,致使終究沒有編譯成功。所以建議大家下載以下圖所示的開源庫緊縮包:
解壓下載的緊縮包,其目錄以下圖所示:
※下面觸及到Android工程創(chuàng)建、導(dǎo)入SQLCipher開源庫等工作:
創(chuàng)建Android工程就不詳細(xì)說了,創(chuàng)建完工程后,直接將sqlcipher-for-android-v3.2.0文件夾中的內(nèi)容全部拷貝到android工程中便可:
接下來的步驟也很關(guān)鍵:
右鍵工程,Build Path → Configure Build Path,依照下圖所示添加相應(yīng)的jar包,刪除android自有庫:
最后在程序中加入讀取加密數(shù)據(jù)庫的關(guān)鍵代碼便可:
現(xiàn)在SQLCipher for Android已是3.X版本了,而微信竟然還停留在2.X時期,所以這句話是為了能夠用3.X的開源庫兼容2.X的加密解密方法,如果不加這句話,是沒法對數(shù)據(jù)庫進行解密的。
(題外話:SQLCipher的功能確切相當(dāng)強大,我這里介紹的只是冰山1角,更多的功能大家可以通過其官網(wǎng)或Github中提供的工程代碼進行探究)
最后展現(xiàn)1下程序運行效果,從Logcat信息可以看到,我們成功讀取了微信的EnMicroMsg.db文件中的message數(shù)據(jù)表:
固然,我所做的工作有著明顯的不足,即需要先通過各種人工方式計算出數(shù)據(jù)庫解密密碼,然后再進行.db文件的解密。有興趣的網(wǎng)友可以嘗試直接在程序中獲得IMEI與微信uin(這個應(yīng)當(dāng)是難點),然后MD5取前7位,最后用算出的解密碼對數(shù)據(jù)庫進行解密。