日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用CocoaPods给微信集成SDK打印收发消息

發(fā)布時間:2025/3/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用CocoaPods给微信集成SDK打印收发消息 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

推薦序

本文介紹的是一套逆向工具,可以在非越獄手機上給任意應(yīng)用增加插件。在文末的示例中,作者拿微信舉例,展示出在微信中打印收發(fā)消息的功能。

這套工具可以加快逆向開發(fā)的速度,其重簽名思想也可以用于二次分發(fā)別人的應(yīng)用。

其實這也展示出蘋果在應(yīng)用安全上的防護還需要加強,希望“董小姐”可以看到本文(偷笑)。

作者介紹:劉培慶,目前在網(wǎng)易信息安全部門工作。個人博客地址: http://www.alonemonkey.com/。感謝作者授權(quán)轉(zhuǎn)發(fā)。

背景

筆者本身是一個iOS逆向的愛好者,曾在使用iOSOpenDev在Xcode開發(fā)越獄插件的時候,由于工具已經(jīng)好幾年沒有更新,安裝和使用起來都會諸多問題,所以最初筆者只是想改良iOSOpenDev的兼容問題,后面在開發(fā)中不斷冒出新的idea,并在工具中實現(xiàn)了這些想法,所以就有了本文將要給大家強烈推薦的工具MonkeyDev。

用途

在使用之前,大家關(guān)心的都是它的功能,可以做什么。那么MonkeyDev這個工具可以做什么呢?總結(jié)來說可以做如下這些事情:

  • 可以使用Xcode開發(fā)CaptainHook Tweak、Logos Tweak 和 Command-line Tool,在越獄機器開發(fā)插件,這是原來iOSOpenDev功能的遷移和改進。
  • 只需拖入一個砸殼應(yīng)用,自動集成Reveal、Cycript和注入的動態(tài)庫并重簽名安裝到非越獄機器。
  • 支持調(diào)試自己編寫的動態(tài)庫和第三方App
  • 支持通過CocoaPods第三方應(yīng)用集成SDK以及非越獄插件,簡單來說就是通過CocoaPods搭建了一個非越獄插件商店。

大概了解了之后下面就通過具體的實際應(yīng)用來體會它的強大之處吧。

環(huán)境準(zhǔn)備

在使用之前首先是環(huán)境的配置,如果配置不對的話,可能會出一些奇怪的問題,你也可以結(jié)合Wiki來操作。

  • 安裝最新的theos?
  • git?clone?--recursive?https://github.com/theos/theos.git?/opt/theos?
    • 安裝ldid
  • brew?install?ldid?
  • 如果是用于越獄開發(fā),需要配置免密碼登錄越獄設(shè)備,如果沒有越獄機器可以跳過這步。

  • ssh-keygen?-t?rsa?-P?''?
  • ?
  • ssh-copy-id?-i?/Users/username/.ssh/id_rsa?root@ip??
  • 安裝

    你可以通過如下命令選擇指定的Xcode進行安裝,也可以默認(rèn)安裝。

    • 指定Xcode安裝:
  • sudo?xcode-select?-s?/Applications/Xcode-xxx.app?
    • 默認(rèn)安裝的Xcode:
  • xcode-select?-p?
    • 執(zhí)行安裝命令:
  • git?clone?https://github.com/AloneMonkey/MonkeyDev.git?
  • ?
  • cd?MonkeyDev/bin?
  • ?
  • sudo?./md-install??
    • 如需卸載,執(zhí)行卸載命令:
  • sudo?./md-uninstall?
    • 如需更新,執(zhí)行更新命令:
  • sudo?./md-update?
  • 模塊介紹

    安裝完成之后,打開Xcode,點擊File - New - Project...,選擇iOS滑動到最下方可以看到MonkeyDev提供的模塊:

    介紹下這幾個模塊的用途:

    越獄模塊

    • CaptainHook Tweak

    使用CaptainHook提供的頭文件進行OC函數(shù)的Hook,以及屬性的獲取。

    • Logos Tweak

    使用theos提供的logify.pl工具將.xm文件轉(zhuǎn)成.mm文件進行編譯,默認(rèn)集成CydiaSubstrate,可以使用MSHookMessageEx和MSHookFunction來Hook OC函數(shù)和指定地址。

    • Command-line Tool

    可以直接創(chuàng)建運行于越獄設(shè)備的命令行工具

    非越獄模塊

    • MonkeyApp

    這是自動給第三方應(yīng)用集成Reveal、Cycript和注入dylib的模塊,支持調(diào)試dylib和第三方應(yīng)用,支持Pod給第三放應(yīng)用集成SDK,只需要準(zhǔn)備一個砸殼后的ipa或者app文件即可。

    功能介紹

    關(guān)于CaptainHook Tweak、Logos Tweak 和 Command-line Tool的使用這里不再介紹,有問題可以查看項目Wiki

    下面主要介紹MonkeyApp的使用,開啟你的非越獄插件開發(fā)之旅~

    準(zhǔn)備

    在開始使用前,需要準(zhǔn)備一個砸殼后的應(yīng)用,可以使用越獄手機砸殼,然后獲取ipa或app,沒有越獄手機直接從某助手下載越獄應(yīng)用即可。

    創(chuàng)建項目

    點擊File - New - Project...創(chuàng)建iOS項目,選擇MonkeyApp。

    創(chuàng)建完成之后,你會得到一個這樣的工程:

    這里我創(chuàng)建的項目名字就是MonkeyApp,所以下面對應(yīng)的都是MonkeyApp,你自己創(chuàng)建的由你的項目名字而定! 另外Xcode 8需要另外在App里面增加動態(tài)庫的依賴,如下:

    MonkeyAppDylib這個是將被注入目標(biāo)App的動態(tài)庫,你自己要hook的代碼可以在MonkeyAppDylib.m文件里面寫,我在里面寫了一些Demo代碼,直接運行即可看到效果,支持OC runtime的HOOK,C函數(shù)的fishhook。

    AntiAntiDebug這個里面是反反調(diào)試的代碼。

    fishhook這個是自動集成的fishhook模塊。

    下面Framewroks已經(jīng)自動集成了Reveal.framework和Cycript.framework。

    拖入砸殼應(yīng)用編譯

    打開某助手選擇應(yīng)用游戲里面的越獄應(yīng)用,下載一個應(yīng)用就是已經(jīng)砸殼了的。

    然后打開TargetApp目錄,拷貝ipa文件到當(dāng)前目錄下面,如下圖所示:

    然后點擊運行即可,運行后可以從控制臺看到動態(tài)庫已經(jīng)注入成功,Reveal已經(jīng)成功加載!當(dāng)然手機上面也運行起來了!

    打開Mac上的Reveal即可查看應(yīng)用的界面結(jié)構(gòu)啦!如下圖所示:

    默認(rèn)還集成了Cycript,從Cycript官網(wǎng)下載SDK,然后進去SDK目錄運行如下命令即可:

  • ./cycript?-r?iphoneip:6666?
  • 獲取微信消息

    下面以一個簡單獲取微信收到的消息為例,來進一步介紹它的使用,首先打開MonkeyAppDylib.m文件,在最下面寫入如下代碼:

  • @interface?CMessageWrap?
  • @property?(nonatomic,?strong)?NSString*?m_nsContent;?
  • @property?(nonatomic,?assign)?NSInteger?m_uiMessageType;?
  • @end?
  • CHDeclareClass(CMessageMgr)?
  • ?
  • CHMethod2(void,?CMessageMgr,?AsyncOnAddMsg,?NSString*,?msg,?MsgWrap,?CMessageWrap*,?msgWrap){?
  • ????NSString*?content?=?[msgWrap?m_nsContent];?
  • ????if([msgWrap?m_uiMessageType]?==?1){?
  • ????????NSLog(@"收到消息:?%@",?content);?
  • ????}?
  • ????CHSuper2(CMessageMgr,?AsyncOnAddMsg,?msg,?MsgWrap,?msgWrap);?
  • }?
  • ?
  • CHConstructor{?
  • ????CHLoadLateClass(CMessageMgr);?
  • ????CHClassHook2(CMessageMgr,?AsyncOnAddMsg,?MsgWrap);?
  • }??
  • 然后重新運行就能看到效果了:

    然后就可以愉快的開發(fā)非越獄插件了,還可以直接調(diào)試!

    使用CocoaPods集成SDK

  • target?'MonkeyAppDylib'?do?
  • ?????pod?'FLEX'?
  • end??
  • 這里的Target要設(shè)置為動態(tài)庫而不是App,然后執(zhí)行Pod install。然后將如下選項改回Yes。

    在MonkeyAppDylib.m文件中加入SDK初始化代碼:

  • #import?<FLEX/FLEXManager.h>?
  • ?
  • void?initCycriptServer(){?
  • ????[[NSNotificationCenter?defaultCenter]?addObserverForName:UIApplicationDidFinishLaunchingNotification?object:nil?queue:[NSOperationQueue?mainQueue]?usingBlock:^(NSNotification?*?_Nonnull?note)?{?
  • ????????[[FLEXManager?sharedManager]?showExplorer];?
  • ????????CYListenServer(6666);?
  • ????}];?
  • }??
  • 運行效果如下:

    非越獄插件商店

    既然可以支持CocoaPods了,那么完全可以將自己寫的非越獄插件傳到CocoaPods,然后通過pod一鍵安裝!

    下面就將上面寫的獲取微信消息插件放到CocoaPods,新建Cocoa Touch Framework項目,然后增加頭文件CaptainHook.h和自己的源文件PrintWXMessage.m,并將上面的代碼拷貝過來,如下圖所示:

    然后生成framework弄成zip包(zip包需要包含模擬器和真機的架構(gòu)才能通過本地驗證),編輯PrintWXMessage.podspec文件內(nèi)容如下:

  • Pod::Spec.new?do?|spec|?
  • ??spec.name?????????????=?"PrintWXMessage"?
  • ??spec.version??????????=?"1.0.0"?
  • ??spec.summary??????????=?"Print?WX?Message?for?MonkeyDev"?
  • ??spec.description??????=?<<-DESC?
  • ??????????????????????????-?Print?WX?Message?for?MonkeyDev?
  • ????????????????????????DESC?
  • ?
  • ??spec.homepage?????????=?"https://github.com/AloneMonkey/MonkeyDev"?
  • ?
  • ??spec.license??????????=?{?:type?=>?"BSD",?:file?=>?"LICENSE"?}?
  • ??spec.author???????????=?{?"AloneMonkey"?=>?"liupeiqing1993@163.com"?}?
  • ??spec.social_media_url?=?"http://weibo.com/xiaoqing28"?
  • ??spec.platform?????????=?:ios,?"8.0"?
  • ??spec.source???????????=?{?:http?=>?"https://github.com/AloneMonkey/MonkeyDevPod/raw/master/PrintWXMessage/LatestBuild/PrintWXMessage.zip"}?
  • ??spec.vendored_frameworks?=?"PrintWXMessage.framework"?
  • end??
  • 這里source直接寫的是zip包的地址,里面就是筆者生成的framework動態(tài)庫。

    增加私有CocosPods:

  • pod?repo?add?MonkeyDevSpecs?https://github.com/AloneMonkey/MonkeyDevSpecs.git?
  • 將PrintWXMessage包發(fā)布到私有Pod:

  • pod?repo?push?MonkeyDevSpecs?PrintWXMessage.podspec?
  • 修改Podfile文件內(nèi)容如下,然后pod install安裝,并且把原來寫在MonkeyAppDylib.m的打印微信消息的代碼刪除。

  • source?'https://github.com/AloneMonkey/MonkeyDevSpecs.git'?
  • ?
  • target?'MonkeyAppDylib'?do?
  • ?????pod?'PrintWXMessage'?
  • end?
  • ?
  • ~?MonkeyApp?pod?install?
  • Cloning?spec?repo?`alonemonkey`?from?`https://github.com/AloneMonkey/MonkeyDevSpecs.git`?
  • Analyzing?dependencies?
  • Downloading?dependencies?
  • Installing?PrintWXMessage?(1.0.0)?
  • Generating?Pods?project?
  • Integrating?client?project?
  • ?
  • [!]?Please?close?any?current?Xcode?sessions?and?use?`MonkeyPod.xcworkspace`?for?this?project?from?now?on.?
  • Pod?installation?complete!?There?is?1?dependency?from?the?Podfile?and?1?total?pod?installed.??
  • 運行即可看到插件已經(jīng)完美集成成功!!!

    MonkeyDev項目地址請點擊閱讀原文查看。





    作者:AloneMonkey 來源:51CTO

    總結(jié)

    以上是生活随笔為你收集整理的使用CocoaPods给微信集成SDK打印收发消息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。