? ? ? 微信是一個超級APP兜挨,對其進行逆向分析脊串,對我們的APP開發(fā)有很高的參考價值研铆。最最重要的一點是,關于微信的資料相信網(wǎng)上還是有著比較多的資料劳较。另外要說的一點是網(wǎng)上有很多售賣的微信Tweak驹止,諸如自動搶紅包、微商助手观蜗、一鍵點贊等臊恋,最令人驚訝的是,竟然還有在微信群里賭博的Tweak助手墓捻!廢話不多說抖仅,下面進入正題。
? ? ? ?首先從AppStore上把最新版本的微信下載到一款越獄手機中砖第。然后使用Cycript動態(tài)的探索下微信的頁面結構撤卢,Cycript的具體信息這里就不在做詳細介紹了。詳細過程見下圖:
通過Cycript能夠對我們的設想進行驗證厂画,也可以對微信頁面上的基本UI控件進行定位凸丸,還可以通過找到相應的控件然后打印出控件綁定的相關事件等。Cycript就像一臺腹腔鏡般打入了微信內部袱院,讓我們可以對任何我們感興趣的東西進行分析與驗證屎慢。
但僅僅使用Cycript來提取細節(jié)是遠遠不夠的瞭稼,我們還需要從更寬廣的尺度上來分析微信整個架構與組織。這時classdump就能夠派上用場了腻惠。classdump是一個分析二進制文件的工具环肘,這里我們可以使用它來獲取微信APP的所有頭文件信息。因為AppStore的原因集灌,微信App上帶有一層保護殼悔雹,我們需要使用一款名叫dumpdecrypted的開源工具破掉這層殼后才能使用classdump導出頭文件。開源工具的地址是:https://github.com/stefanesser/dumpdecrypted欣喧。使用者需要把工程拷貝到本地并編譯成可使用的工具腌零,然后scp到手機中。使用方式如下圖:
成功后唆阿,破除外殼的微信可執(zhí)行文件就生成在當前所在目錄下益涧,使用scp拷貝到mac機器上后,就可以使用class-dump命令獲取頭文件信息了驯鳖。命令截圖如下:
除了能多直接獲取頭文件外闲询,我們還可以通過ida工具來反編譯可執(zhí)行文件,相比于Android平臺JAVA代碼反編譯后的偽代碼浅辙,IOS平臺可執(zhí)行文件反編譯生成的偽代碼的可主動性要低一級扭弧,大部分都是類似匯編語言的存在,但足夠我們理清自己的思緒记舆,前提是要耐下心來閱讀這些偽代碼鸽捻,截圖如下:
另外還有一個比較值得推薦的工具是Reveal,它是一個查看應用界面詳細構造的工具氨淌,網(wǎng)絡上有很多如何使用的文章泊愧,這里不在介紹,給出使用截圖一張:
有了頭文件盛正,有了ida反編譯删咱,配合上cycript,可以驗證我們的各種關于微信代碼的猜測豪筝,但要將這些猜測串成一個可執(zhí)行的Tweak痰滋,就需要反復的大量的實驗⌒拢看到上圖微信界面那上黃色的相當怪異的電話圖標了嗎敲街,它就是下一篇的主角。當基本完成這個自動添加好友的微信時严望,歷經(jīng)了100多次的編譯安裝測試的過程多艇。。像吻。峻黍。