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