博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS MonkeyDev 尝试体验(非越狱开发)
阅读量:5337 次
发布时间:2019-06-15

本文共 2088 字,大约阅读时间需要 6 分钟。

一、前言

  随着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 successful2018-09-17 19:30:50.957942+0800 Weibo[522:98683] [MethodTrace] Method Trace is disabled2018-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 transaction2018-09-17 19:30:51.029109+0800 Weibo[522:98683] You've implemented -[
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解决。

     

  

转载于:https://www.cnblogs.com/doudouyoutang/p/9664405.html

你可能感兴趣的文章
Ubuntu下安装eclipse
查看>>
MemCache
查看>>
Python3编写Windows服务程序
查看>>
麻省理工MaKey MaKey的电路板,触控无处不在,很强大。
查看>>
关于leap motion的原理和疑点
查看>>
Web前端,高性能优化
查看>>
【转载】Recommendations with Thompson Sampling (Part II)
查看>>
UML
查看>>
Javascript中decodeURI()与decodeURIComponent()区别
查看>>
redis设置开机启动
查看>>
Web GIS
查看>>
SpringBoot搭建简单的web项目及Echarts地图demo
查看>>
Spark随笔(三):straggler的产生原因
查看>>
android中TextView中文字体粗体的方法
查看>>
sealed(C# 参考)
查看>>
Golang Import使用入门
查看>>
postgresql 获取主键字段
查看>>
GNU libmicrohttpd 0.9.24 发布
查看>>
响应式网站
查看>>
Less环境搭建
查看>>