首先,這個不是寫個新手看的,內容比較粗略,把幾個關鍵點本身列一下,以作記錄java
首先,我對andriod不懂,對java自己也不是很是熟,也歷來沒寫過andriod或java的程序,但本着曾經對編程的理解,想動動手。數據庫
1、準備工做,裝環境,java jdk, AS(andriod studio),apk反編譯工具 jadx編程
這個步驟有幾點提醒一下,一是網上關於AS的版本較舊,安裝後要配置不少環境,我用的3.2,安裝便可用工具
apk反編譯工具,網上推薦的步驟也較爲繁瑣,但把apk的打包過程講了一下,也能夠學一下,中間我用了apktool,但最後發現只要jadx便可學習
2、學習了一下AS,但因爲重點在看WX,並無去動手作什麼,但按規矩仍是寫了一個helloword,這裏惟一注意一下如何建立虛擬手機模擬器調試ui
AS自己直接帶有,建立一個就好了。但爲了速度,仍是選擇了夜神模擬器,這個仍是挺好用的,如何鏈接調試論壇上都有插件
3、在模擬器上如何安裝Xposed,網上資料不少,由於用的夜神,已經root過了,因而也在它論壇上下了個,直接裝一下便可,調試
4、寫了第一個hook,感受挺好用的,開始按網上的資料開始折騰,如下爲折騰的記錄內存
a、網上說要Android Device Monitor 這玩意AS上沒有,但在SDK目錄 裏有,找一下就能夠了,這個東西,我感受能有一點用處,能監控到執行了哪些方法,不過貌似跟AS不能同時連上模擬器,另外在用這個以前,還得裝個插件BuildProp Enhancer,這樣才能調試到WX的內容string
b、jadx若是想用好,請找個cpu和內存都很是棒的機器,我被卡了一夜,都沒有反編譯完,用了一臺32G內存的機器,大概15分鐘完事
c、模擬器上帶的是WX6.7.3,網上資料都是比較老的WX版本,無法跑起來,只能靠靜態的去看
d、網上我只看了收消息和回覆消息的部分,其它的感受不想去弄,因此沒怎麼看,對於收消息有些人用的攔截insertWithOnConflict 來通知收到消息,也能夠,但我仍是折騰的
com.tencent.mm.booter.notification.b,這個比較即時一些
e、回覆消息部分,網上都只作了簡單回覆,我的和羣均可以,但沒有處理@的相關代碼,在檢測是否有人@我時,能夠在監控的類上,檢測第一個參數,即
com.tencent.mm.booter.notification.b上的czp這個值,
if (czp.contains("notify@all") || czp.contains("<![CDATA[wxid_3e3gejxxxxk22]]>"))
另外,在有人@我時,內容裏也包含了@我了WX的ID,還得要拆分消息的內容,這個挺坑的! 消息的內容大概是這樣wxid_3e3gejxxxxk22:@隱客 你好啊
這樣就知道是誰@我了
x=field_content.indexOf(":");
String id=field_content.substring(0,x);
String co=field_content.substring(x+1);
同時回覆的時候,發送時的最後一個參數注意,也組成這樣的格式便可,
HashMap hm= new HashMap<String, String>();
hm.put("atuserlist","<![CDATA["+id+"]]>");
f、最難的一處是如何獲取好友列表,網上有一處資料,是從加載好友列表到ListView着手的,雖然能夠實現,但有個不足,就是要人工點一下WX上的通信錄纔會執行
setAdapter這裏的代碼,另一個方法,就是本身去讀WX的數據庫,想一想不太想弄,因而監控了一下發如今WX啓動的時候,自己有讀聯繫人的動做,因而攔截了一下讀數據庫的動做
rawQueryWithFactory,就OK了,是從FROM rcontact這個表裏讀的g、我的信息就不想讀了,比較簡單,在SharedPreferences裏至次,三個問題解決了,就寫這麼多吧!