安装
1.下载monkeyDev
git clone https://github.com/AloneMonkey/MonkeyDev.git
2.进入bin文件夹执行安装命令
cd MonkeyDev/bin
sudo ./md-install
3.安装成功标识
在 new project 的时候创建列表中有mokeyDev模版
hello world
1.创建一个MonkeyDev项目
双击MonkeyApp
填写项目名称 然后点击 next,然后在选择项目存储位置,点击create
生成的项目目录结构
文件夹及功能:
testMonkeyDev 项目原始代码,原ipa包存放该文件夹下的Target文件夹便可
testMonkeyDevDylib 编写逆向代码的动态库,monkeyDev模版基于thoes封装了一套和oc语法相似的hook工具。
Frameworks 本项目使用的框架
Products 打包完的app存在地点
2.修改monkeyDev配置
选中项目本身 → Build Settings 在搜索框中搜索 monkeyDev
配置字段 | |
---|---|
MONKEYDEV_APP_SUBSTRATE | - |
MONKEYDEV_CLASS_DUMP | 头文件dump,会在testMonkeyDev下生成一个header文件,如果自己使用class-dump了就不需要用他的dump了,设置为NO便可,想要使用就设置成YES |
MONKEYDEV_DEFAULT_BUNDLEID | 是否使用默认bundleId,针对一些应用对bundleId的检测。设置成YES就会向外暴露原始 ipa 的 bundleId 。 |
MONKEYDEV_INSERT_DULIB | 是否注入动态库,这个monkeyDev默认给选了YES就不要动了。因为monkeyDev就是使用注入动态库的方式进行代码注入的 |
MONKEYDEV_RESTORE_SYMBOL | 是否还原符号表,如果使用fishhook之类需要修改符号表的工具就需要还原符号表。 |
MONKEYDEV_TARGET_APP | 使用原始ipa的方式,Optional 为 ipa可选的 |
PODS_ROOT | 打包后存放的位置 |
常规设置成以下这样便可:
3.放置脱壳后的ipa
将脱壳后的ipa放到TargetApp中(一定是脱壳成功的ipa,不能只是在内存中扣出来的二进制文件,没有依赖是运行不起来的)
4.运行monkeyDev项目
这时可运行的有两个,一个是当前项目,一个是我们注入代码的动态库。要选择当前项目进行运行,动态库也会跟着编译完成
5.运行后遇到的问题与解决方法
(1)Device "iPhone" isn't registered in your developer account.
问题原因:设备没有注册到当前这个账号上。
解决方法:
点击Register Device,将设备注册到账号上(需要联网)
如果账号已经达到上限就需要换其他账号了
(2)Unable to install "testMonkeyDev"
问题原因:设备上已经存在一个与当前bundleId相同的app
解决方法:
删除掉设备上的相同bundleId的app
(3)Could not launch “imeituan”
问题原因:monkeyDev的问题,每个新创建的bundleId都会出现这个问题
解决方法:
进入到/Users/{用户名}/Library/Developer/Xcode/DerivedData/ 目录,将前缀为当前项目名的包结构删除掉,重起xcode在启动项目就可以正常运行了
(4)在打包运行中如果出现找不到libstdc++如下:
原因:xcode版本不在支持libstdc++,而老的项目依然在用。
解决方法:下载libstdc++库,地址:https://github.com/devdawei/libstdc-
下载完成后根据自己的xcode版本运行对应的脚本。