一、前言

  随着iOS系统的逐渐开放,iOS越狱需求的人越来越少,那么在非越狱系统上面开发越狱插件那将是一个不错的选择,在github上面发现一个开源的Xcode工程模板。

  整合了越狱开发的工具、重签名工具、以及常用的库,方便在非越狱模式下面进行代码的修改和插件的开发。

  这个工具有重要的意义,降低了app重新打包重签名的门槛。让越狱开发和普通开发一样方便

  https://github.com/AloneMonkey/MonkeyDev

  

二、尝试

  1)安装

    在安装中最方便的是直接在机器上面连接VPN,挂上外网的环境,那么安装应该是很顺畅的。

    我的环境是公司代理之下的环境,需要修改安装脚本中的代码

    修改方式我已经提交到:

    https://github.com/AloneMonkey/MonkeyDev/issues/120

    

    2)重启Xcode之后,检查工程模板中是否包含Monkey Dev的开发环境

      

      那么表示安装成功。

    3)选择Monkey Dev环境,建立一个空的工程,编译到手机上。

      一般是OK的,下一步是要放入一个空的IPA到目标文件夹中,一直没找到空的ipa,只找到一个在这里。

      App貌似是一个微博,已经不能用了。但是只要能安装到手机上就可以

      编译安装到手机运行报错:

      Reveal Are you trying to load dynamic library with Reveal Framework already linked?

      应该是App本身链接了一份Reveal,在工程目标的Other Link中删掉这个库的链接。

      继续跑,出现异常导致Crash,下异常断点。

      

      说明valueForKey中存在没有定义的key,写一个扩展将这个方法覆盖掉,避免原来的方法抛出异常。

      

      直接返回空,跳过这个错误。可以看到App成功启动了,然后控制台输出了log。

2018-09-17 19:30:50.932143+0800 Weibo[522:98774] [DYMTLInitPlatform] platform initialization successful
2018-09-17 19:30:50.957942+0800 Weibo[522:98683] [MethodTrace] Method Trace is disabled
2018-09-17 19:30:50.958010+0800 Weibo[522:98683]
!!!congratulations!!!
----------------insert dylib success----------------
2018-09-17 19:30:50.958134+0800 Weibo[522:98683] [AntiAntiDebug Init]
2018-09-17 19:30:51.024275+0800 Weibo[522:98683] +[CATransaction synchronize] called within transaction
2018-09-17 19:30:51.029109+0800 Weibo[522:98683] You've implemented -[<UIApplicationDelegate> application:didReceiveRemoteNotification:fetchCompletionHandler:], but you still need to add "remote-notification" to the list of your supported UIBackgroundModes in your Info.plist.

     4)可以看到hook的代码正常执行了

      

      接下来的事情就看想象了。

三、分析总结

   这个框架有几个主要的功能

    1、一个完整的Xcode工程,包含一个App的主工程、一个dylib的动态链接库工程。

    2、在App编译完成之后,可以将目标App完成与编译App之间的替换,这样完成移花接木的功能。

    3、链接库功能中使用了theOS中的库,实现对OC方法的hook和C方法的hook。

    4、实现ipa中签名文件替换,动态库的注入

    5、可调式

    

  注意:

    注入链接库之后的App,bundleID随之改变,对于微信来说,校验了bundleID可能会提示非法客户端导致封号,但这个也可以通过hook解决。

    

  

iOS MonkeyDev 尝试体验(非越狱开发)的更多相关文章

  1. iOS修改手机定位(非越狱任意位置)

    利用开发者的一些调试功能,我们可以修改非越狱的苹果手机定位,模拟任意位置. 经测试,此方法仅限开发者调试使用,并不能长时间修改手机定位. 1. 首先需要了解一些坐标系的知识 iOS,原生坐标系为 WG ...

  2. 一步一步实现iOS微信自己主动抢红包(非越狱)

    前言:近期笔者在研究iOS逆向project,顺便拿微信来练手,在非越狱手机上实现了微信自己主动抢红包的功能. 题外话:此教程是一篇严肃的学术探讨类文章,只用于学习研究,也请读者不要用于商业或其它非法 ...

  3. 使用Xcode7非美刀购买开发者帐号,非越狱安装IOS ipa

    做苹果开发,需要至少99美刀注册开发者帐号,这样写出来的程序才可以在真机上运行调试,才可以发布到app store,现在xcode7之后苹果有了调整,除了发布到app store还是需要美刀帐号,其它 ...

  4. 微信双开是定时炸弹?关于非越狱iOS上微信分身高危插件ImgNaix的分析

    作者:蒸米@阿里移动安全 序言 微信作为手机上的第一大应用,有着上亿的用户.并且很多人都不只拥有一个微信帐号,有的微信账号是用于商业的,有的是用于私人的.可惜的是官方版的微信并不支持多开的功能,并且频 ...

  5. iOS越狱开发(一)

    做越狱开发也有一些时间了,有很多东西想总结一下,希望给他人一些借鉴,也是自己对过去开发经历的一些总结.个人不推荐使用盗版,这里主要以技术介绍为主. 这个系列里面主要介绍怎样进行越狱开发,涉及到以下几个 ...

  6. iOS开发——高级技术精选&底层开发之越狱开发第一篇

    底层开发之越狱开发第一篇 做越狱开发也有一些时间了,有很多东西想总结一下,希望给他人一些借鉴,也是自己对过去开发经历的一些总结.个人不推荐使用盗版,这里主要以技术介绍为主. 这个系列里面主要介绍怎样进 ...

  7. 关于ios越狱开发的那些事

    也许吧,每每接触某些新东西的时候,都有点犯晕吧,这不是应该要的. 第一次接触ios越狱开发,也是这样吧.这篇主要是从无到有的说一下ios越狱的开发,网上很多的教程大部门都比较旧了吧,放在新设备上总是出 ...

  8. iOS开发——高级技术精选&底层开发之越狱开发第二篇

    底层开发之越狱开发第二篇 今天项目中要用到检查iPhone是否越狱的方法. Umeng统计的Mobclick.h里面已经包含了越狱检测的代码,可以直接使用 /*方法名: * isJailbroken ...

  9. iOS钉钉远程打卡助手(支持越狱和非越狱)

    前言:本文主要讲述使用hook方式实现钉钉远程打卡功能,涉及到tweak相关知识,如果你不想了解具体实现细节可直接到我的Github地址参考安装(包含越狱和非越狱两种方法)   你是不是像小编一样每个 ...

  10. Xcode 6 越狱开发基础

    最近接触到XCode越狱开发的问题,越狱开发首先iphone设备得越狱,然后安装Appsync,安装之后,安装ipa将不再验证程序签名的有效性,不签名的程序也可以直接在设备上运行,只需要保证IPA本身 ...

随机推荐

  1. k8s 深入篇———— Job与CronJob[十]

    开篇 简要演练一下job 和 cronjob 正文 实际上,它们主要编排的对象,都是"在线业务",即:Long Running Task(长作业).比如,我在前面举例时常用的 Ng ...

  2. sql 语句系列(计算一个季度的开始日期和结束日期)[八百章之第二十三章]

    前言 很多时候,我们进行数据库查询的时候,查询一个季度的财务报表的时候. 比如说查询2020年第一季度的单子,可能传入后台的就是20201,表示的就是20201第一季度,这时候我们要转换为日期. se ...

  3. ActiveMQ C#消息队列系列一(安装)

    前言 我前面写过ActiveMQ 如何在windows 上安装,但是呢,一般公司都是在Linux 上跑的,所以就来安装一下吧. 正文 1.进入官网下载linux 版本. 2.然后放置到Linux上. ...

  4. mmdeploy源码安装 (转换faster rcnn r50/yolox为tensorrt,并用mmdeploy sdk推理)

    mmdeploy源码安装 (转换faster rcnn r50/yolox为tensorrt,并进行推理) 这个系列是一个随笔,是我走过的一些路,有些地方可能不太完善.如果有那个地方没看懂,评论区问就 ...

  5. 【Oracle】在PL/SQL中使用sql实现选择排序

    [Oracle]在PL/SQL中使用sql实现选择排序 一般来说,SQL要排序的话直接使用order by即可 不一般来说,就是瞎搞,正好也可以巩固自己的数据结构基础 使用SQL实现排序系列: 使用S ...

  6. 国内唯一连续入选Gartner,Quick BI是如何做到的?

    ​简介:阿里云Quick BI凭借灵活的公共云部署,私有化独立部署能力.无缝对接各类云上数据库和自建数据库.可视化搭建分析.高效数据处理能力与强大数据计算能力,使得在2022年持续入选Gartner ...

  7. 还在为多集群管理烦恼吗?RedHat 和蚂蚁、阿里云给开源社区带来了OCM

    简介: 为了让开发者.用户在多集群和混合环境下也能像在单个 Kubernetes 集群平台上一样,使用自己熟悉的开源项目和产品轻松开发功能,RedHat 和蚂蚁.阿里云共同发起并开源了 OCM(Ope ...

  8. [FAQ] Git远程仓库想把目录大写改为小写,windows本地不识别的的处理

      通过四步操作: 1. 先把忽略大小写设为false,即区分大小写git config core.ignorecase false 2. 拷贝出来备份那几个大写的目录,随后分支上操作删除,提交到远程 ...

  9. [FE] Quasar 性能优化: 减小 vendor.js 尺寸

    默认情况下,出于性能和缓存的原因,Quasar 所有来自 node_modules 的东西都会被注入到 vendor 中. 但是,如果希望从这个 vendor.js 中添加或删除某些内容,可以如下这样 ...

  10. 尝试 IIncrementalGenerator 进行增量 Source Generator 生成代码

    在加上热重载时,源代码生成 Source Generator 的默认行为会让 Visual Studio 有些为难,其原因是热重载会变更代码,变更代码触发代码生成器更新代码,代码生成器更新的代码说不定 ...