前言:
最近拿到一個需求,要通過微信去爬去公眾號的文章。
最開始使用的方法是用Accessibility去模擬點擊,沒想到才用了一個禮拜就WX爸爸給查封了。然后又動起了拿Xpose下手的想法. ? (基于微信6.5.7 基于微信6.5.7 基于微信6.5.7)?
首先是從ID入手,通過AndroidStudio自帶的 Android Device Monitor查看到你需要關注的ID。Tools--Android--AndroidDeviceMonitor 將手機到達想要顯示的位置然后點擊這里,就得到了我們要的ID
我們得到了一個 com.tencent.mm:id/afx的ID,這個就是我們得到文章的最終線索了
我們利用apktool反編譯微信以后,得到res/values/public.xml文件。這個文件其實就是我們Android開發中特別重要的"R.java"的替身。
檢索這個關鍵字"afx",找到了type=id,name=afx ,id=0x7f10064a的關聯項,
記住這里的type一定得是id的那個。
然后我們將APK改名成 ***.zip,并解壓縮 得到所有的.dex文件
dex是Android平臺上(Dalvik虛擬機)的可執行文件, 相當于Windows平臺中的exe文件, 每個Apk安裝包中都有dex文件, 里面包含了該app的所有源碼, 通過反編譯工具可以獲取到相應的java源碼。
檢索JAVA源碼的16進制 -------沒有發現相關連的資源,
我們將16進制的數值轉化成10進制為2131756618,
然后利用JD-GUI 檢索這個十進制的數值為 在R.class中找到了這個數值:
public static final int cbY = 2131756618;
//然后在JD-GUI中搜索R.h.cbY
解鎖出來8個與這個id有關的疑似adapter的類
如法炮制檢索 這幾個類中 getView 方法內部的Inflate方法
一一排除后將Adapter鎖定為 ?
com.tencent.mm.ui.conversation.a 這個類,它是一個adapter,
我們發現給這個控件提供數據的類是com.tencent.mm.storage.ad,
方法名為
這個方法會在這個Adapter調用然后我們在Xpose中鎖定這個方法
這里特別圖示的注釋,不能使用Class.forname()來得到Class,會報ClassNotFound異常
將field_content導出就得到我們需要的文章啦,以后采集文章,只需要把微信號停在訂閱號那里,等候微信推送過來就可以啦