初识MonkeyDev
source link: https://www.freebuf.com/sectool/226310.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
一、前言
过年在家无聊,原本打算装个抢红包插件发笔小横财,却掉进了很多坑,折腾损失了不少(时间和精力)红包。顺便学习了下猴神 MonkeyDev
的使用。
二、MonkeyDev介绍
iOSOpenDev
的升级版,非越狱插件开发集成神器。
1.可以使用 Xcode
开发 CaptainHook Tweak
, Logos Tweak
和命令行工具,在越狱机器开发插件,这是原来的 iOSOpenDev
功能的迁移和改进。
2.只需拖入一个砸壳应用,即可自动集成 class-dump
, restore-symbol
, Reveal
, Cycript
和注入的动态库并重签名安装到非越狱机器。
3.支持调试自己编写的动态库和第三方 App
4.支持通过 CocoaPods
第三方应用集成 SDK
以及非越狱插件,简单来说就是通过 CocoaPods
建造了一个非越狱插件商店。
相关链接 monkeydev
文档说明: https://monkeydev.org/
三、MonkeyDev插件的安装
这里给出官方环境要求和安装步骤: 环境要求
1、 安装最新的 theos
sudo git clone --recursive https://github.com/theos/theos.git /opt/theos
2、 安装 ldid
(如安装theos过程安装了ldid,跳过)
brew install ldid
3、 配置免密码登录越狱设备(如果没有越狱设备,跳过)
ssh-keygen -t rsa -P '' ssh-copy-id -i /Users/username/.ssh/id_rsa root@ip
或者安装 sshpass
自己的设置密码:
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
- 注:
Mac
环境git clone
提速 - 修改
https
方式git clone
配置 (需根据ss
代理端口号而定)
vim ~/.gitconfig [http] postBuffer = 524288000 proxy = socks5://127.0.0.1:1086 [https] proxy = socks5://127.0.0.1:1086
- 或者用命令行修改配置
git config --global http.proxy 'socks5://127.0.0.1:1086' git config --global https.proxy 'socks5://127.0.0.1:1086'
安装1、 通过以下命令选择指定的 Xcode
进行安装:
sudo xcode-select -s /Applications/Xcode-beta.app
2、 默认安装的 Xcode
为:
xcode-select -p
3、 执行安装命令:
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-install)"
4、 卸载:
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-uninstall)"
5、 如果没有发布特殊说明,使用如下命令更新即可:
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-update)"
安装/更新之后重启下 Xcode
再新建项目。
四、MonkeyApp的使用
主要介绍 MonkeyDev
的一步集成 非越狱
调试。
创建项目
安装完成之后,打开 Xcode
,单击 File
– New
– Project
…,选择 iOS
滑动到最下方可以看到 MonkeyDev
提供的模块如下图,选择相应的项目类型,就可以创建对应的项目。
点击创建 MonkeyAPP
,然后会自动生成相关文件如下图:
项目结构包含以下部分:
put ipa or app here
:将需要分析的解密后的 App
或者 ipa
文件放到该目录下面。
WeChatDemoDylib
这个是将被注入目标 App
的动态库,需要hook的代码可以在 WeChatDemoDylib.m
文件里面写,支持 OC runtime
的 HOOK
,C函数的 fishhook
。
WeChatDemoDylib.xm
:支持用Logos语法编写 hook
代码。
WeChatDemoDylib.m
:可以在该文件中编写注人的 hook
代码。
AntiAntiDebug
:里面是反反调试的代码.
fishhook
:自动集成的 fishhook
模块。
常用的logos语法
官方介绍 http://iphonedevwiki.net/index.php/Logos
1、 %hook
指定需要 hook
的类名
%hook SBApplicationController -(void)uninstallApplication:(SBApplication *)application { NSLog(@"Hey, we're hooking uninstallApplication:!"); %orig; // Call the original implementation of this method return; } %end
2、 %new
该指令用来给指定的class添加一个新的函数
%new -(void)newMethod:(NSString*) output{ NSLog(@"This is a new method : %@", output); }
3、 %orig
调用原始的挂钩方法。
%orig %orig (arg1 , … )
4、 %group
用于条件初始化或 %hook
分组
%group iOS8 %hook IOS8_SPECIFIC_CLASS // your code here %end // end hook %end // end group ios8 %group iOS9 %hook IOS9_SPECIFIC_CLASS // your code here %end // end hook %end // end group ios9 %ctor { if (kCFCoreFoundationVersionNumber > 1200) { %init(iOS9); } else { %init(iOS8); } }
五、查找定位微信登录按钮
将 pp助手
下载的解密后的 ipa
放入 targetapp
文件中,通过 monkey
工程的图层调试发现( Debug
> View Debugging
> Capture View Hierarchy
)为灰色无法选择。
故使用 FLEXLoader
定位 APP
登录按钮:
FLEXLoader
下载及使用相关链接: https://github.com/buginux/FLEXLoader
选择登录按钮后,查看 views
,点击查看方法详情。
然后定位到了登录按钮的方法 onFirstViewLogin
和该方法所在的类 WCAccountLoginControlLogic
编写相关代码监听登录按钮:
六、修改微信步数
通过搜索发现使用 MonkeyDev
插件修改微信步数的代码如下:
#import <UIKit/UIKit.h> %hook WCDeviceStepObject - (int)m7StepCount { return 88888; } %end
七、微信抢红包插件
找了两款自动抢红包插件,分别是 yahibo
的源码和 清水师傅
打包好的 dylib
,测试发现在最新版 微信
(7.0.8)都可以正常使用。 清水师傅的功能较多,并且使用和安装方便快捷。
注入重打包ipa文件
以清水师傅打包好的dylib为例,在非越狱手机下的安装方法如下。
相关链接: https://qiita.com/shimizukawasaki/items/d8d01e30a8f67da68ea1
1、使用PP助手下载 越狱应用
里的VX(该区的ipa均为砸壳后的文件)
2、下载一键注入工具: 选好对应路径,将下载的砸壳后的 ipa
文件和 dylib
文件进行重打包。
下载地址: http://www.iosre.com/t/ipa-ipa/15494
将ipa安装到非越狱手机
先说下踩过的2个坑吧
使用Impactor安装
坑一:将 ipa
文件拖入 Impactor
,输入 APPLE ID
帐号与密码后出现了各种报错提示,关闭了苹果双重认证,重新申请了 apple id
,换 win
系统等等,最后一直没安装成功,放弃了。
相关链接
https://www.52pojie.cn/thread-946944-1-1.html
使用AltDeploy安装
坑二: google
发现有说 AltDeploy
简单快捷完全取代了 Impactor
,然后下载使用发现最后出现应用名错误,找到 issues
发现不少人遇到此问题,解决方法说更换1.0版本,最后发现 AltDeploy
在安装 ipa
过程中莫名崩溃,也放弃了。
相关链接
https://mrmad.com.tw/altdeploy
https://github.com/pixelomer/AltDeploy
使用MonkeyDev安装
最后还是使用 MonkeyDev
来安装注入好的 ipa
文件。1、打开 Xcode
,单击 File
– New
– Project
…,选择 iOS
滑动到最下方可以看到 MonkeyDev
点击创建 MonkeyAPP
,将注入好的ipa文件放入 TargetApp
目录内。
2、在 Signing&Capabilities
内设置登录自己的 APPLE ID
3、将 非越狱
手机连接 mac
,选择需要安装的手机设备,然后按运行。
4、点击 手机设置
- 通用
- 描述文件与设备管理
,将开发者应用 Apple Development:your AppleID
设置为 信任
。
5、打开 微信
- 设置
- 清水必杀技
即可启用 抢红包
、 防撤回
和修改 微信步数
等功能。
6、可以使用 ida
来修改字符串达到个人DIY设置
八、总结
通过学习和实践发现 MonkeyDev
不但可以在非越狱的手机上进行逆向分析,还能自动完成各种准备工作,并且能联动 Xcode
自身的调试功能。1、源码及DYLIB下载地址:链接: https://pan.baidu.com/s/1pohumAKmfxt72bBJMBOUNQ 密码:zhte2、猴神的私有 CocoaPods
仓库 https://github.com/AloneMonkey/MonkeyDevSpecs 有一些网友上传的插件,也可以学习和使用。
九、参考链接
https://github.com/AloneMonkey/MonkeyDev/wiki/
https://juejin.im/post/5da82cf1e51d4524e207fc39#heading-14
https://mp.weixin.qq.com/s/XArk877Av3RvYhrwfhzKsA
https://juejin.im/post/5e1aa4d951882520a167d8ee#heading-3
https://qiita.com/shimizukawasaki/items/d8d01e30a8f67da68ea1
https://github.com/zhengmin1989/MyArticles
*本文原创作者:tales,本文属于FreeBuf原创奖励计划,未经许可禁止转载
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK