工欲善其事必先利其器。但网上的工具太多了,在开发过程中我也是都趟了一遍,最终浮出两个工具,推荐给大家。
1. jadx
一个强大方便的APK反编译一条龙工具,相比之前需要apktool,dex2jar,jd组合才能完成的工作,jadx确实要方便很多。
除了简单方便之外,还具有代码索引,甚至还有"反混淆"功能,然而我的老爷机根本就跑不动反混淆,无法体会到其便利之处。
使用过程中可以明显的看到,软件是懒加载的,所以通过包名定位类还是可以的,但如果使用搜索等功能,则会吃掉大量内存。我的电脑内存经常是飚红的。
在翻看微信源码过程中,我深刻的感受到,类或者方法的合理命名是多么重要,混淆的代码看起来真的是费劲,不方便记忆,希望大家在以后的编码中能真正的重视命名规范,规范也是一种生产力。另外,可以适当做一下笔记,省的要重复的翻看~
该工具源码已在github开源
github: https://github.com/skylot/jadx
下载地址: https://bintray.com/skylot/jadx/unstable/_latestVersion#files
2. sqlcipher数据库图形工具
把微信数据库拖进该工具,会有一个输入密码的弹出框,然后输入密码就OK了。图形化的操作,更加方便和直观的看到数据表的字段和结构,有助于对协议的理解,也更方便数据操作。
微信密码的生成规则: md5(imei+uin).substring(0, 7);
举例: imei:865552038534404, uin:-1451295224
则,md5(865552038534404-1451295224)。
MD5在线加密一下,会生成4种规格的,取32位小写前7位。
字符串 865552038534404-1451295224
16位 小写 57cf24e822aa1f7b
16位 大写 57CF24E822AA1F7B
32位 小写 d03866ad57cf24e822aa1f7b5e9c7010
32位 大写 D03866AD57CF24E822AA1F7B5E9C7010
注意:
a.imei和uin都是字符串,不是做减法。
b.uin获取办法。进入data/data/“weixin_package”/shared_prefs/auth_info_key_prefs.xml, 读取"_auth_uin"字段。
下载地址: https://download.csdn.net/download/njweiyukun/9729084