• monkeyDev使用及初次使用问题的解决方法


    安装

    1.下载monkeyDev

    git clone https://github.com/AloneMonkey/MonkeyDev.git

    2.进入bin文件夹执行安装命令

    1. cd MonkeyDev/bin
    2. 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版本运行对应的脚本。

  • 相关阅读:
    第四章、实现用例
    基于Rabbitmq和Redis的延迟消息实现
    Spring Cloud Eureka面试题
    如何高效管理多个 Outlook 邮箱?
    Java企业微信对接(二)微信端回调到企业端
    Go基础-文件、字符
    【C++】STL详解(十二)—— 用哈希表封装出unordered_map和unordered_set
    net-java-php-python-伊犁旅游网站计算机毕业设计程序
    浅谈软件测试面试一些常见的问题
    leetcode刷题详解——粉刷房子
  • 原文地址:https://blog.csdn.net/dancheng1/article/details/120301439