工欲善其事必先利其器。但網(wǎng)上的工具太多了,在開發(fā)過程中我也是都趟了一遍,最終浮出兩個工具,推薦給大家。
1. jadx
一個強大方便的APK反編譯一條龍工具,相比之前需要apktool,dex2jar,jd組合才能完成的工作,jadx確實要方便很多。
除了簡單方便之外,還具有代碼索引,甚至還有"反混淆"功能,然而我的老爺機根本就跑不動反混淆,無法體會到其便利之處。
使用過程中可以明顯的看到,軟件是懶加載的,所以通過包名定位類還是可以的,但如果使用搜索等功能,則會吃掉大量內(nèi)存。我的電腦內(nèi)存經(jīng)常是飚紅的。
在翻看微信源碼過程中,我深刻的感受到,類或者方法的合理命名是多么重要,混淆的代碼看起來真的是費勁,不方便記憶,希望大家在以后的編碼中能真正的重視命名規(guī)范,規(guī)范也是一種生產(chǎn)力。另外,可以適當(dāng)做一下筆記,省的要重復(fù)的翻看~
該工具源碼已在github開源
github: https://github.com/skylot/jadx
下載地址: https://bintray.com/skylot/jadx/unstable/_latestVersion#files
2. sqlcipher數(shù)據(jù)庫圖形工具
把微信數(shù)據(jù)庫拖進(jìn)該工具,會有一個輸入密碼的彈出框,然后輸入密碼就OK了。圖形化的操作,更加方便和直觀的看到數(shù)據(jù)表的字段和結(jié)構(gòu),有助于對協(xié)議的理解,也更方便數(shù)據(jù)操作。
微信密碼的生成規(guī)則: md5(imei+uin).substring(0, 7);
舉例: imei:865552038534404, uin:-1451295224
則,md5(865552038534404-1451295224)。
MD5在線加密一下,會生成4種規(guī)格的,取32位小寫前7位。
字符串 865552038534404-1451295224
16位 小寫 57cf24e822aa1f7b
16位 大寫 57CF24E822AA1F7B
32位 小寫 d03866ad57cf24e822aa1f7b5e9c7010
32位 大寫 D03866AD57CF24E822AA1F7B5E9C7010
注意:
a.imei和uin都是字符串,不是做減法。
b.uin獲取辦法。進(jìn)入data/data/“weixin_package”/shared_prefs/auth_info_key_prefs.xml, 讀取"_auth_uin"字段。
下載地址: https://download.csdn.net/download/njweiyukun/9729084