直接利用Android手機破解微信加密資料庫EnMicroMsg.db,enmicromsg.db

來源:互聯網
上載者:User

直接利用Android手機破解加密資料庫EnMicroMsg.db,enmicromsg.db

※首先,簡單介紹一下加密資料庫EnMicroMsg.db的破解方法:

要先批評一下,居然用開源的資料庫加密方式,這不是一破解一個準嗎...

如果你的模擬器或者真機已經獲得了root許可權,就可以直接將記錄聊天記錄的資料庫檔案拷貝出來,資料庫檔案具體存放位置如下:

在/data/data/中:


(題外話:android原生的模擬器root起來很複雜,推薦一款第三方模擬器:genymotion,很方便)


※我們拿到EnMicroMsg.db後,用常用的資料庫管理軟體開啟,發現EnMicroMsg.db被加密了,但是密碼建置規則很簡單,具體如下:

(手機IMEI + uin )取MD5的前7位

手機的IMEI擷取:手機撥號盤輸入:*#06#

uin擷取:http://blog.csdn.net/yuanbohx/article/details/41280837

但是即使算出來解密密碼,我們仍發現用剛才使用的資料庫管理軟體是打不開的。因為其用的是SQLCipher開源庫提供的加密解密演算法,故在網上下載SQLCipher.exe這個軟體,開啟.db檔案時,輸入計算出來的密碼後,就可以開啟EnMicroMsg.db檔案了:



※上面提到了SQLCipher是一個提供資料庫檔案加密解密功能的第三方開源庫,我們先來訪問以下他們的官網看個究竟:

https://www.zetetic.net/sqlcipher/open-source/

我們驚喜的發現,現在SQLCipher提供了Android作業系統的開源庫,源碼在Github上可以下載獲得,但是我嘗試下載了Github上的工程,編譯的時候遇到了很多問題,導致最終沒有編譯成功。所以建議大家下載如所示的開源庫壓縮包:


解壓下載的壓縮包,其目錄如所示:



※下面涉及到Android工程建立、匯入SQLCipher開源庫等工作:

建立Android工程就不詳細說了,建立完工程後,直接將sqlcipher-for-android-v3.2.0檔案夾中的內容全部拷貝到android工程中即可:


接下來的步驟也很關鍵:

右鍵工程,Build Path → Configure Build Path,按照所示添加相應的jar包,刪除android自有庫:


最後在程式中加入讀取加密資料庫的關鍵代碼即可:

public void readWeChatDatabase() {SQLiteDatabase.loadLibs(this);String password = "XXXXXXX";File databaseFile = getDatabasePath("/data/data/com.tencent.mm/MicroMsg/47d58c79e692e212XXXXXXXXXXXXX/EnMicroMsg.db");//File databaseFile = getDatabasePath("EnMicroMsg.db");eventsData = new myDataHelper(this);SQLiteDatabaseHook hook = new SQLiteDatabaseHook(){  public void preKey(SQLiteDatabase database){  }  public void postKey(SQLiteDatabase database){  database.rawExecSQL("PRAGMA cipher_migrate;");  //最關鍵的一句!!!  }};try {SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(databaseFile, "XXXXXXX(密碼)", null, hook);Cursor c = db.query("message", null, null, null, null, null, null);while (c.moveToNext()) {  int _id = c.getInt(c.getColumnIndex("msgId"));  String name = c.getString(c.getColumnIndex("content"));  Log.i("db", "_id=>" + _id + ", content=>" + name);  }  c.close();db.close();} catch (Exception e) {}}

程式很簡答,password即為資料庫的加密密碼,databaseFile為資料庫檔案路徑,database.rawExecSQL("PRAGMA cipher_migrate")這句最為關鍵,原因如下:

現在SQLCipher for Android已經是3.X版本了,而居然還停留在2.X時代,所以這句話是為了能夠用3.X的開源庫相容2.X的加密解密方法,如果不加這句話,是無法對資料庫進行解密的。

(題外話:SQLCipher的功能確實相當強大,我這裡介紹的只是冰山一角,更多的功能大家可以通過其官網或者Github中提供的工程代碼進行探究)

最後展示一下程式運行效果,從Logcat資訊可以看到,我們成功讀取了的EnMicroMsg.db檔案中的message資料表:


當然,我所做的工作有著明顯的不足,即需要先通過各種人工方式計算出資料庫解密密碼,然後再進行.db檔案的解密。有興趣的網友可以嘗試直接在程式中取得IMEI與uin(這個應該是痛點),然後MD5取前7位,最後用算出的解密碼對資料庫進行解密。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.