iOS应用安全 —— MonkeyDev的使用

概述

MonkeyDev的功能主要如下:

  • 可以使用Xcode开发CaptainHook Tweak、Logos Tweak 和 Command-line Tool,在越狱机器开发插件,这是原来iOSOpenDev功能的迁移和改进。
  • 只需拖入一个砸壳应用,自动集成class-dump、restore-symbol、Reveal、Cycript和注入的动态库并重签名安装到非越狱机器。
  • 支持调试自己编写的动态库和第三方App
  • 支持通过CocoaPods第三方应用集成SDK以及非越狱插件,简单来说就是通过CocoaPods搭建了一个非越狱插件商店。

MonkeyDev wiki: https://github.com/AloneMonkey/MonkeyDev/wiki

安装

  • 安装最新的theos

    1
    sudo git clone --recursive https://github.com/theos/theos.git /opt/theos
  • 安装ldid

    1
    brew install ldid
  • 安装MonkeyDev

    1
    sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-install)"

更新MonkeyDev

1
sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-update)"

参考https://github.com/AloneMonkey/MonkeyDev/wiki/%E5%AE%89%E8%A3%85

使用

安装完成之后,打开Xcode,新建一个项目,滑动到最下方可以看到MonkeyDev提供的模块:

upload successful

非越狱下注入Frida

1.准备好砸壳后的app

从pp助手、iphonecake等下载砸壳后的应用,也可以在其他越狱的手机上砸壳

2.创建MonkeyApp项目

新建一个MonkeyApp项目,然后填写Product Name,对于非越狱设备可以不用管Target App,如果是越狱设备的话可以在Target App填写目标App的名字或者bundle id,工具将会自动使用frida-ios-dump提取ipa文件

这里创建的项目是monkeydev_test,得到如下结构:

monkeydev_testDylib这个是将被注入目标App的动态库,自己要hook的代码可以在monkeydev_testDylib.m文件里面写,默认项目写了一些Demo代码,支持OC runtime的HOOK,C函数的fishhook。还支持theos logtweak的写法! 直接写在monkeydev_testDylib.m文件文件即可。

Config 这个是cycript的一些脚本下载以及methodtrace配置代码。

LLDBTools 这个是用于LLDB调试的代码,比如po pviews()。

AntiAntiDebug 这个里面是反反调试的代码。

fishhook 这个是自动集成的fishhook模块。

创建的项目已经自动集成了RevealServer.framework和libcycript.dylib,如果选择Release编译的话是不会集成的。

upload successful

3.拖入编译

(1) 右键项目里面的TargetApp文件夹Show in Finder,把ipa文件拖入下面的位置(当然app文件夹也可以的):

upload successful

(2) 从FridaGadget.dylib下载动态库增加到App最后的Copy Files里面:

upload successful

(3) 将FridaGadget.dylib链接到MonkeyDev注入动态库的依赖里面

upload successful

编译后运行app, 如果启动日志有: Frida: Listening on 127.0.0.1 TCP port 27042 就集成成功:

upload successful