使用CocoaPods给微信集成SDK打印收发消息
推薦序
本文介紹的是一套逆向工具,可以在非越獄手機(jī)上給任意應(yīng)用增加插件。在文末的示例中,作者拿微信舉例,展示出在微信中打印收發(fā)消息的功能。
這套工具可以加快逆向開(kāi)發(fā)的速度,其重簽名思想也可以用于二次分發(fā)別人的應(yīng)用。
其實(shí)這也展示出蘋(píng)果在應(yīng)用安全上的防護(hù)還需要加強(qiáng),希望“董小姐”可以看到本文(偷笑)。
作者介紹:劉培慶,目前在網(wǎng)易信息安全部門(mén)工作。個(gè)人博客地址: http://www.alonemonkey.com/。感謝作者授權(quán)轉(zhuǎn)發(fā)。
背景
筆者本身是一個(gè)iOS逆向的愛(ài)好者,曾在使用iOSOpenDev在Xcode開(kāi)發(fā)越獄插件的時(shí)候,由于工具已經(jīng)好幾年沒(méi)有更新,安裝和使用起來(lái)都會(huì)諸多問(wèn)題,所以最初筆者只是想改良iOSOpenDev的兼容問(wèn)題,后面在開(kāi)發(fā)中不斷冒出新的idea,并在工具中實(shí)現(xiàn)了這些想法,所以就有了本文將要給大家強(qiáng)烈推薦的工具M(jìn)onkeyDev。
用途
在使用之前,大家關(guān)心的都是它的功能,可以做什么。那么MonkeyDev這個(gè)工具可以做什么呢?總結(jié)來(lái)說(shuō)可以做如下這些事情:
- 可以使用Xcode開(kāi)發(fā)CaptainHook Tweak、Logos Tweak 和 Command-line Tool,在越獄機(jī)器開(kāi)發(fā)插件,這是原來(lái)iOSOpenDev功能的遷移和改進(jìn)。
- 只需拖入一個(gè)砸殼應(yīng)用,自動(dòng)集成Reveal、Cycript和注入的動(dòng)態(tài)庫(kù)并重簽名安裝到非越獄機(jī)器。
- 支持調(diào)試自己編寫(xiě)的動(dòng)態(tài)庫(kù)和第三方App
- 支持通過(guò)CocoaPods第三方應(yīng)用集成SDK以及非越獄插件,簡(jiǎn)單來(lái)說(shuō)就是通過(guò)CocoaPods搭建了一個(gè)非越獄插件商店。
大概了解了之后下面就通過(guò)具體的實(shí)際應(yīng)用來(lái)體會(huì)它的強(qiáng)大之處吧。
環(huán)境準(zhǔn)備
在使用之前首先是環(huán)境的配置,如果配置不對(duì)的話(huà),可能會(huì)出一些奇怪的問(wèn)題,你也可以結(jié)合Wiki來(lái)操作。
- 安裝最新的theos?
- 安裝ldid
如果是用于越獄開(kāi)發(fā),需要配置免密碼登錄越獄設(shè)備,如果沒(méi)有越獄機(jī)器可以跳過(guò)這步。
安裝
你可以通過(guò)如下命令選擇指定的Xcode進(jìn)行安裝,也可以默認(rèn)安裝。
- 指定Xcode安裝:
- 默認(rèn)安裝的Xcode:
- 執(zhí)行安裝命令:
- 如需卸載,執(zhí)行卸載命令:
- 如需更新,執(zhí)行更新命令:
模塊介紹
安裝完成之后,打開(kāi)Xcode,點(diǎn)擊File - New - Project...,選擇iOS滑動(dòng)到最下方可以看到MonkeyDev提供的模塊:
介紹下這幾個(gè)模塊的用途:
越獄模塊
- CaptainHook Tweak
使用CaptainHook提供的頭文件進(jìn)行OC函數(shù)的Hook,以及屬性的獲取。
- Logos Tweak
使用theos提供的logify.pl工具將.xm文件轉(zhuǎn)成.mm文件進(jìn)行編譯,默認(rèn)集成CydiaSubstrate,可以使用MSHookMessageEx和MSHookFunction來(lái)Hook OC函數(shù)和指定地址。
- Command-line Tool
可以直接創(chuàng)建運(yùn)行于越獄設(shè)備的命令行工具
非越獄模塊
- MonkeyApp
這是自動(dòng)給第三方應(yīng)用集成Reveal、Cycript和注入dylib的模塊,支持調(diào)試dylib和第三方應(yīng)用,支持Pod給第三放應(yīng)用集成SDK,只需要準(zhǔn)備一個(gè)砸殼后的ipa或者app文件即可。
功能介紹
關(guān)于CaptainHook Tweak、Logos Tweak 和 Command-line Tool的使用這里不再介紹,有問(wèn)題可以查看項(xiàng)目Wiki
下面主要介紹MonkeyApp的使用,開(kāi)啟你的非越獄插件開(kāi)發(fā)之旅~
準(zhǔn)備
在開(kāi)始使用前,需要準(zhǔn)備一個(gè)砸殼后的應(yīng)用,可以使用越獄手機(jī)砸殼,然后獲取ipa或app,沒(méi)有越獄手機(jī)直接從某助手下載越獄應(yīng)用即可。
創(chuàng)建項(xiàng)目
點(diǎn)擊File - New - Project...創(chuàng)建iOS項(xiàng)目,選擇MonkeyApp。
創(chuàng)建完成之后,你會(huì)得到一個(gè)這樣的工程:
這里我創(chuàng)建的項(xiàng)目名字就是MonkeyApp,所以下面對(duì)應(yīng)的都是MonkeyApp,你自己創(chuàng)建的由你的項(xiàng)目名字而定! 另外Xcode 8需要另外在App里面增加動(dòng)態(tài)庫(kù)的依賴(lài),如下:
MonkeyAppDylib這個(gè)是將被注入目標(biāo)App的動(dòng)態(tài)庫(kù),你自己要hook的代碼可以在MonkeyAppDylib.m文件里面寫(xiě),我在里面寫(xiě)了一些Demo代碼,直接運(yùn)行即可看到效果,支持OC runtime的HOOK,C函數(shù)的fishhook。
AntiAntiDebug這個(gè)里面是反反調(diào)試的代碼。
fishhook這個(gè)是自動(dòng)集成的fishhook模塊。
下面Framewroks已經(jīng)自動(dòng)集成了Reveal.framework和Cycript.framework。
拖入砸殼應(yīng)用編譯
打開(kāi)某助手選擇應(yīng)用游戲里面的越獄應(yīng)用,下載一個(gè)應(yīng)用就是已經(jīng)砸殼了的。
然后打開(kāi)TargetApp目錄,拷貝ipa文件到當(dāng)前目錄下面,如下圖所示:
然后點(diǎn)擊運(yùn)行即可,運(yùn)行后可以從控制臺(tái)看到動(dòng)態(tài)庫(kù)已經(jīng)注入成功,Reveal已經(jīng)成功加載!當(dāng)然手機(jī)上面也運(yùn)行起來(lái)了!
打開(kāi)Mac上的Reveal即可查看應(yīng)用的界面結(jié)構(gòu)啦!如下圖所示:
默認(rèn)還集成了Cycript,從Cycript官網(wǎng)下載SDK,然后進(jìn)去SDK目錄運(yùn)行如下命令即可:
獲取微信消息
下面以一個(gè)簡(jiǎn)單獲取微信收到的消息為例,來(lái)進(jìn)一步介紹它的使用,首先打開(kāi)MonkeyAppDylib.m文件,在最下面寫(xiě)入如下代碼:
然后重新運(yùn)行就能看到效果了:
然后就可以愉快的開(kāi)發(fā)非越獄插件了,還可以直接調(diào)試!
使用CocoaPods集成SDK
這里的Target要設(shè)置為動(dòng)態(tài)庫(kù)而不是App,然后執(zhí)行Pod install。然后將如下選項(xiàng)改回Yes。
在MonkeyAppDylib.m文件中加入SDK初始化代碼:
運(yùn)行效果如下:
非越獄插件商店
既然可以支持CocoaPods了,那么完全可以將自己寫(xiě)的非越獄插件傳到CocoaPods,然后通過(guò)pod一鍵安裝!
下面就將上面寫(xiě)的獲取微信消息插件放到CocoaPods,新建Cocoa Touch Framework項(xiàng)目,然后增加頭文件CaptainHook.h和自己的源文件PrintWXMessage.m,并將上面的代碼拷貝過(guò)來(lái),如下圖所示:
然后生成framework弄成zip包(zip包需要包含模擬器和真機(jī)的架構(gòu)才能通過(guò)本地驗(yàn)證),編輯PrintWXMessage.podspec文件內(nèi)容如下:
這里source直接寫(xiě)的是zip包的地址,里面就是筆者生成的framework動(dòng)態(tài)庫(kù)。
增加私有CocosPods:
將PrintWXMessage包發(fā)布到私有Pod:
修改Podfile文件內(nèi)容如下,然后pod install安裝,并且把原來(lái)寫(xiě)在MonkeyAppDylib.m的打印微信消息的代碼刪除。
運(yùn)行即可看到插件已經(jīng)完美集成成功!!!
MonkeyDev項(xiàng)目地址請(qǐng)點(diǎn)擊閱讀原文查看。
作者:AloneMonkey 來(lái)源:51CTO
總結(jié)
以上是生活随笔為你收集整理的使用CocoaPods给微信集成SDK打印收发消息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 将Tomcat添加进服务启动
- 下一篇: squid反向代理网站配置示例