使用 CocoaPods 给微信集成 SDK 打印收发消息
2017-11-22 11:51
225 查看
转载:http://www.alonemonkey.com/2017/07/26/cocoapods-wechat-message/
可以使用Xcode开发CaptainHook Tweak、Logos Tweak 和 Command-line Tool,在越狱机器开发插件,这是原来iOSOpenDev功能的迁移和改进。
只需拖入一个砸壳应用,自动集成Reveal、Cycript和注入的动态库并重签名安装到非越狱机器。
支持调试自己编写的动态库和第三方App
支持通过CocoaPods第三方应用集成SDK以及非越狱插件,简单来说就是通过CocoaPods搭建了一个非越狱插件商店。
大概了解了之后下面就通过具体的实际应用来体会它的强大之处吧。
安装最新的theos
安装ldid
如果是用于越狱开发,需要配置免密码登录越狱设备,如果没有越狱机器可以跳过这步。
指定Xcode安装:
默认安装的Xcode:
执行安装命令:
如需卸载,执行卸载命令:
如需更新,执行更新命令:
介绍下这几个模块的用途:
使用CaptainHook提供的头文件进行OC函数的Hook,以及属性的获取。
Logos Tweak
使用theos提供的logify.pl工具将.xm文件转成.mm文件进行编译,默认集成CydiaSubstrate,可以使用
OC函数和指定地址。
Command-line Tool
可以直接创建运行于越狱设备的命令行工具
这是自动给第三方应用集成Reveal、Cycript和注入dylib的模块,支持调试dylib和第三方应用,支持Pod给第三放应用集成SDK,只需要准备一个砸壳后的ipa或者app文件即可。
下面主要介绍MonkeyApp的使用,开启你的非越狱插件开发之旅~
创建完成之后,你会得到一个这样的工程:
这里我创建的项目名字就是
下面Framewroks已经自动集成了
然后打开TargetApp目录,拷贝ipa文件到当前目录下面,如下图所示:
然后点击运行即可,运行后可以从控制台看到动态库已经注入成功,Reveal已经成功加载!当然手机上面也运行起来了!
打开Mac上的Reveal即可查看应用的界面结构啦!如下图所示:
默认还集成了Cycript,从Cycript下载SDK,然后进去SDK目录运行如下命令即可:
然后重新运行就能看到效果了:
然后就可以愉快的开发非越狱插件了,还可以直接调试!
这里的Target要设置为动态库而不是App,然后执行Pod install。然后将如下选项改回Yes。
在
运行效果如下:
下面就将上面写的获取微信消息插件放到CocoaPods,新建
然后生成framework弄成zip包(zip包需要包含模拟器和真机的架构才能通过本地验证),编辑
这里source直接写的是zip包的地址,里面就是笔者生成的framework动态库。
增加私有CocosPods:
将PrintWXMessage包发布到私有Pod:
修改Podfile文件内容如下,然后pod install安装,并且把原来写在
运行即可看到插件已经完美集成成功!!!
MonkeyDev项目地址请点击阅读原文查看。
欢迎您扫一扫上面的微信公众号,订阅我的博客!
背景
笔者本身是一个iOS逆向的爱好者,曾在使用iOSOpenDev在Xcode开发越狱插件的时候,由于工具已经好几年没有更新,安装和使用起来都会诸多问题,所以最初笔者只是想改良iOSOpenDev的兼容问题,后面在开发中不断冒出新的idea,并在工具中实现了这些想法,所以就有了本文将要给大家强烈推荐的工具MonkeyDev。用途
在使用之前,大家关心的都是它的功能,可以做什么。那么MonkeyDev这个工具可以做什么呢?总结来说可以做如下这些事情:可以使用Xcode开发CaptainHook Tweak、Logos Tweak 和 Command-line Tool,在越狱机器开发插件,这是原来iOSOpenDev功能的迁移和改进。
只需拖入一个砸壳应用,自动集成Reveal、Cycript和注入的动态库并重签名安装到非越狱机器。
支持调试自己编写的动态库和第三方App
支持通过CocoaPods第三方应用集成SDK以及非越狱插件,简单来说就是通过CocoaPods搭建了一个非越狱插件商店。
大概了解了之后下面就通过具体的实际应用来体会它的强大之处吧。
环境准备
在使用之前首先是环境的配置,如果配置不对的话,可能会出一些奇怪的问题,你也可以结合Wiki来操作。安装最新的theos
1 | git clone --recursive https://github.com/theos/theos.git /opt/theos |
1 | brew install ldid |
12 | ssh-keygen -t rsa -P ''ssh-copy-id -i /Users/username/.ssh/id_rsa root@ip |
安装
你可以通过如下命令选择指定的Xcode进行安装,也可以默认安装。指定Xcode安装:
1 | sudo xcode-select -s /Applications/Xcode-xxx.app |
1 | xcode-select -p |
123 | git clone https://github.com/AloneMonkey/MonkeyDev.gitcd MonkeyDev/binsudo ./md-install |
1 | sudo ./md-uninstall |
1 | sudo ./md-update |
模块介绍
安装完成之后,打开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目录运行如下命令即可:
1 | ./cycript -r iphoneip:6666 |
获取微信消息
下面以一个简单获取微信收到的消息为例,来进一步介绍它的使用,首先打开MonkeyAppDylib.m文件,在最下面写入如下代码:
123456789101112131415161718 | @interface CMessageWrap@property (nonatomic, strong) NSString* m_nsContent;@property (nonatomic, assign) NSInteger m_uiMessageType;@endCHDeclareClass(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);} |
然后就可以愉快的开发非越狱插件了,还可以直接调试!
使用CocoaPods集成SDK
MonkeyDev还支持CocoaPods给第三方应用集成SDK,新建Podfile,写入:123 | target 'MonkeyAppDylib' do pod 'FLEX'end |
在
MonkeyAppDylib.m文件中加入SDK初始化代码:
12345678 | #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包需要包含模拟器和真机的架构才能通过本地验证),编辑
PrintWXMessage.podspec文件内容如下:
1234567891011121314151617 | 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 |
增加私有CocosPods:
1 | pod repo add MonkeyDevSpecs https://github.com/AloneMonkey/MonkeyDevSpecs.git |
1 | pod repo push MonkeyDevSpecs PrintWXMessage.podspec |
MonkeyAppDylib.m的打印微信消息的代码删除。
12345 | source 'https://github.com/AloneMonkey/MonkeyDevSpecs.git'target 'MonkeyAppDylib' do pod 'PrintWXMessage'end |
12345678910 | ~ MonkeyApp pod installCloning spec repo `alonemonkey` from `https://github.com/AloneMonkey/MonkeyDevSpecs.git`Analyzing dependenciesDownloading dependenciesInstalling PrintWXMessage (1.0.0)Generating Pods projectIntegrating 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. |
MonkeyDev项目地址请点击阅读原文查看。
欢迎您扫一扫上面的微信公众号,订阅我的博客!
相关文章推荐
- 使用 CocoaPods 给微信集成 SDK 打印收发消息
- 使用 CocoaPods 给微信集成 SDK 打印收发消息
- 使用 CocoaPods 给微信集成 SDK 打印收发消息
- 使用spring集成的kafka收发消息
- 使用WX-SDK开发微信公众号(一) 接收处理来自微信用户的消息
- 【微信分享】 微信分享集成 使用weixin js sdk 兼容 旧版本 2
- asp.net web api集成微信服务(使用Senparc微信SDK)
- 微信网页分享JS-SDK的集成使用
- 【微信分享】 微信分享集成 使用weixin js sdk 兼容 旧版本 2
- 使用spring集成的kafka收发消息
- 集成微信SDK出现libc++abi.dylib: terminating with uncaught exception of type NSException,微信支付SDKDEMO运行编译报错
- 【iOS XMPP】使用XMPPFramewok(四):收发消息
- 安卓中集成微信SDK需要注意的事项
- 微信公众帐号开发教程第8篇-文本消息中使用网页超链接
- asp.net使用微信发布模版消息核心代码
- 微信JS-SDK使用权限签名算法的服务端实现(.net版本)
- 微信JS-SDK使用权限签名算法的服务端实现(.net版本)
- [032] 微信公众帐号开发教程第8篇-文本消息中使用网页超链接
- HTC Vive VRTK SDK使用入门之集成(版本3.2.0)
- 【iOS XMPP】使用XMPPFramewok(四):收发消息