黑客—破解手機微信聊天記錄及精準定位

微信現在是老少皆宜,大街小巷都在使用,已經替代了傳統的短信聊天方式了,只要涉及到聊天就肯定有隱私消息,那麼本文就來講解如何獲取微信的聊天記錄,定位以及通訊錄信息。

首先我們在沒有網絡的時候,打開微信同樣可以查看聊天記錄,說明微信會把聊天記錄保存到本地,那麼這麼多信息肯定會保存在數據庫中,所以我們可以去查看微信的databases目錄看看內容:

黑客—破解手機微信聊天記錄及精準定位

可惜的是,我們在這個裡面並沒有發現一些有用的數據,所以這時候就瞭解到了微信因為把重要信息的數據庫存在其他目錄下面,我們可以直接把微信的整個沙盒數據全部導出來,然後查找db文件:

黑客—破解手機微信聊天記錄及精準定位

在這個目錄中找到了一些db文件

看到這個目錄下有很多db文件,我們可以一個一個進行查看,這裡可以直接使用SQLite Expert可視化工具進行查看

黑客—破解手機微信聊天記錄及精準定位

可惜的是,這裡打開失敗了,看到提示消息應該瞭解了,這個數據庫文件被加密了。這也更讓我們相信這個數據庫存放的是非常重要的信息,而且從安全角度來說,加密操作也是很正常的。

好了到這裡,看來得去看代碼了,因為數據庫加密了,既然是加密肯定有解密的過程,我們去分析代碼獲取其密碼即可。

首先我們可以使用apktool工具進行反編譯,這裡不演示了,微信本身沒有加固操作,所以反編譯沒有報錯的:

黑客—破解手機微信聊天記錄及精準定位

注意:

這裡的命令中加上了-d的參數了,是為了反編譯之後生成的是java文件,而不是smali文件。便於後面能夠導入Eclipse中

反編譯之後,接下來咋們就開始把文件導入Eclipse中,關於如何導入的話,這裡不介紹了,不瞭解的同學可以轉戰這裡:Eclipse中動態調試smali源碼我們成功導入之後:

黑客—破解手機微信聊天記錄及精準定位

這裡看到有些報錯,但是這個不用太關心,我們分析源碼就可以了,其實到這裡有的同學可能想到的是速度調試:

藉助之前說到的mprop工具來修改系統的調試屬性ro.debuggable屬性值,不瞭解這個工具的同學可以看這篇文章:如何脫掉360加固的殼,如果不想用這個工具就有點費事了,修改反編譯之後的AndroidManifest.xml中打開調試屬性,然後在回編譯,不過可惜的是,在這個過程中我嘗試過失敗了幾次,所以我最後採用了mprop工具來進行操作的。修改系統調試屬性之後可以看到:

微信出於debug模式了,我們這時候只要按照之前說到的Eclipse中動態調試samli源碼的步驟來即可。但是這裡有一個問題,就是在調試的過程中會被卡死的,我嘗試了很多次結果都失敗了,所以這裡就放棄了動態方式破解微信了,而是採用靜態方式去破解微信獲取密碼。

三、破解步驟

之前在說到使用靜態方式破解的時候第一點,一定要找到關鍵點,我們現在的問題是知道了數據庫,但是這個是加密的,我們需要密碼,那麼在Android中如果使用數據庫的話,肯定會涉及到一個類:SQLiteDatabase,我們可以在Eclipse中先去全局搜一下這個類:

黑客—破解手機微信聊天記錄及精準定位

因為微信工程代碼非常大,所以在搜索的過程中需要等一段時間:

黑客—破解手機微信聊天記錄及精準定位

在samli中找到了com.tencent.kingkong.database.SQLiteDatabase類的定義了,因為smali語法看起來還是比較費勁的,所以我們使用Jadx工具進行可視化操作,之前一篇文章中介紹了:Android中反編譯利器分析這裡講解了apktool和jadx工具的原理,為什麼說jadx好用呢?主要是他是開源的,而且用Java編寫的,同時還支持方法的跟蹤,這個對於混淆代碼的跟蹤非常有用。

這裡需要注意個問題,因為微信的apk太大了,所以得分開查看,因為微信有多個dex文件,而剛剛看到SQLiteDatabase類是在第一個dex中的,我們使用jadx查看第一個dex文件即可:

黑客—破解手機微信聊天記錄及精準定位

這樣看起來就方便很多了,我們找到這個類,首先肯定看看他的openDatabase方法,不過這裡會發現有很多重載方法,不過最終都要調用的是這個openDatabase方法:

黑客—破解手機微信聊天記錄及精準定位

內部接著調用了open方法,繼續跟進:

黑客—破解手機微信聊天記錄及精準定位

內部又調用了openInner方法,接著跟進:

黑客—破解手機微信聊天記錄及精準定位

調用了SQLiteConnectionPool的open方法,再跟進去:

黑客—破解手機微信聊天記錄及精準定位

哈哈,終於找到核心的地方了,這裡看到果然有一個密碼的字段,那麼這個值就是SQLiteDatabase中的openDatabase方法的第二個參數,那麼現在我們就去分析哪裡調用了SQLiteDatabase的openDatabase方法,因為SQLiteDatabase的openDatabase的重載方法太多了,所以一個一個找很費勁,所以可以直接搜SQLiteDatabase被調用的地方,可以直接使用Jadx的查找跟蹤功能:

黑客—破解手機微信聊天記錄及精準定位

查找結果:

黑客—破解手機微信聊天記錄及精準定位

這裡會發現,很多地方都調用了,看起來非常麻煩,所以這裡得想個辦法縮減查找範圍,我們剛剛看到SQLiteDatabase類中的open方法都是static的,所以在調用的時候肯定是這麼使用的:Lcom/tencent/kingkong/database/SQLiteDatabase; 這個是標準的smali語法調用形式,所以這時候我們在去Eclipse中全局搜索這個字符串內容:

黑客—破解手機微信聊天記錄及精準定位

最終看到在com.tencent.mm.bb.e這個類中,有多個地方都調用了,咋們再去看看這個類:

黑客—破解手機微信聊天記錄及精準定位

果然在d方法中調用了數據庫的open方法,而且傳入的str2就是密碼,在跟蹤d方法在哪裡被調用了

黑客—破解手機微信聊天記錄及精準定位

點擊進入查看:

黑客—破解手機微信聊天記錄及精準定位

這裡的this.Ee就是密碼,看他的賦值,是先調用j方法構造一個字符串出來,然後取前7個字符即可,再看看j方法:

黑客—破解手機微信聊天記錄及精準定位

這個方法看起來就眼熟了,計算字符串的MD5值的,這裡需要注意的是,MD5的值是小寫的,好了,到這裡我們就瞭解了:密碼其實是一個字符串的MD5值的前7位字符串,那麼接下來的問題在繼續跟蹤是哪個字符串來計算MD5的:

黑客—破解手機微信聊天記錄及精準定位

在繼續跟蹤a方法在哪裡被調用了

黑客—破解手機微信聊天記錄及精準定位

找到之後點擊進入:

黑客—破解手機微信聊天記錄及精準定位

繼續查找這個a方法又在哪裡被調用了,這裡調用的比較深,所以需要多次進行查找跟蹤,耐心點即可:

黑客—破解手機微信聊天記錄及精準定位

最終到了這個類的方法中,我們看到,mY值是通過mY方法獲取的,j2值是上面的i值轉化過來的:

黑客—破解手機微信聊天記錄及精準定位

查看mY方法的實現,很簡單,獲取設備的IMEI值,而i值在前面進行賦值了:

黑客—破解手機微信聊天記錄及精準定位

看到了,是一個uin值,再看看這個uin值在哪裡進行賦值操作的:

黑客—破解手機微信聊天記錄及精準定位

看到這裡就放心了,原來這個uin值存放在SharedPreferences中的,那麼就簡單了,我們在開始的時候把沙盒數據全部導出來了,可以全局搜一下uin字符串的值:

黑客—破解手機微信聊天記錄及精準定位

總結:

到這裡我們就分析完了微信中數據庫加密的密碼獲取流程了,下面來總結一下:

1、首先我們全局查找SQLiteDatabase類,因為這個類是操作數據庫的核心類,他是突破口。

2、找到這個類的定義之後,再次查看他的open系列方法,因為要操作數據庫肯定有open之類的方法。

3、再去全局查找SQLiteDatabase的open方法的調用地方,這裡調用的地方比較多,所以大家需要耐心的查找,而且為了縮小查找範圍,我們可以根據smali語法調用格式的字符串內容來進行查找。

4、找到了這個方法的被盜用的地方,下面就開始一步一步的往下跟蹤,到了一個核心的方法中瞭解到了,密碼是一個字符串計算MD5之後取前7個字符串的值。

5、繼續跟蹤,找到這個被計算MD5的字符串內容,最後跟蹤到這個字符串其實是設備的IMEI加上用戶的uin值,而這個uin值是保存在SharedPreferences中的。

上面雖然找到了密碼,但是我們知道是如何進行數據加密的呢?這裡就要藉助經驗了,因為現在主流的Sqlite數據加密技術就是sqlitecipher,不瞭解的同學可以去看看,這個數據庫加密需要用到so文件,我們去微信的libs下面查看

黑客—破解手機微信聊天記錄及精準定位

這裡沒有找到那個sqlitecipher.so文件,但是我們看到了這個libkkdb.so文件,他貌似就是操作數據庫的,使用IDA打開進行查看內容:

黑客—破解手機微信聊天記錄及精準定位

看到了,這裡的的sqlite操作都是在native層進行的,所以我們如果要查看數據庫的話,需要用sqlcipher軟件來進行查看,這個軟件網上的下載地址很多,專門用來查看sqlitecipher加密的數據庫信息的。

四、數據庫密碼構造

首先獲取設備的IMEI,可以直接撥打:*#06#即可查看;然後查看他的uin值,直接讀取SharedPreferences中的值即可,然後拼接到一起,用txt文件檔保存一下,在使用HashTab工具進行查看屬性即可得到MD5的值,關於HashTab工具

黑客—破解手機微信聊天記錄及精準定位

這個工具還是很有用的,可以很方便的右鍵文件屬性,即可查看文件的MD5值了:

黑客—破解手機微信聊天記錄及精準定位

裡看到前七位就是:748B34D,注意字符小寫=》748b34d:

黑客—破解手機微信聊天記錄及精準定位

輸入密碼之後,就可以查看數據庫中的各個表格信息了:

黑客—破解手機微信聊天記錄及精準定位

可以發現這個數據庫中存了很多表格內容,但是這裡我們最關心的就是通訊錄信息表和聊天記錄表:

黑客—破解手機微信聊天記錄及精準定位

看到了,聊天記錄表格是message,通訊錄表格是recontact:

黑客—破解手機微信聊天記錄及精準定位

而且這裡有一個好玩的東東,就是你以前刪除的好友,都會存在的,這個是微信會把你的通訊錄保存到服務端,即使你本地刪除了聯繫人,但是服務端並不會刪除,所以如果你想找到你以前刪除的好友,可以在次查找重新加上好友。

好了就介紹到這裡啦,希望各位合理利用技術,切勿違法犯罪!不懂得可以私信一起交流。


分享到:


相關文章: