Cydia Tweak--Cydia Substrate
http://www.jianshu.com/p/8982e9670fc6
Cydia Substrate、MobileHooker
- MSHookMessageEx
- MSHookFunction
- MobileLoader
- Safe Mode
- Logos
下面进行一一说明
四、基本原理说明
1,Cydia Substrate 和 Mobile Substrate
* Cydia Substrate 原名为 Mobile Substrate 已经正式更名为 Cydia Substrate。
* 它是越狱后cydia插件/软件运行的一个基础依赖包。提供软件运行的公共库,可以用来动态替换
内存中的代码、数据等所以iOS系统越狱环境下安装绝大部分插件,必须首先安装Cydia Substrate。
* Cydia Substrate主要由3部分组成:MobileHooker,MobileLoader 和 safe mode。
2,MobileHooker、Logos
* MobileHooker用于替换覆盖系统的方法,这个过程被称为Hooking(挂钩)
* 它主要包含两个函数:
void MSHookMessageEx(Class class, SEL selector, IMP replacement, IMP *result);
void MSHookFunction(void*function,void* replacement,void** p_original);
MSHookMessageEx 主要作用于Objective-C函数
MSHookFunction 主要作用于C和C++函数
Logos语法就是对此函数做了一层封装,让编写hook代码变的更直观,上面的例子用的就是logos语法。
MSHookMessageEx 和MSHookFunction 使用方法这里就不介绍了,大家可去看书籍或者查询相关资料。
3,MobileLoader
* MobileLoader用于加载第三方dylib在运行的应用程序中。
* 启动时MobileLoader会根据dylib的同名plist文件指定的作用范围,有选择的在不同进程里通过dlopen函数打开目录/Library/MobileSubstrate/DynamicLibraries/ 下的所有dylib。
4,safe mode
* 因为APP程序质量参差不齐崩溃再所难免,tweak本质是dylib,寄生在别人进程里,如果注入Springboard等。
系统进程一旦出错,可能导致整个进程崩溃,崩溃后就会造成iOS瘫痪。
* 所以CydiaSubstrate引入了安全模式,在安全模
式下所有基于CydiaSubstratede 的三方dylib都会被禁用,便于查错与修复。
* 本人建议自己测试的时候如果HOOK Springboard的时候一定要注意!如果出错,进入安全模式删除插件即可。
总结:
在我的理解就是:我们在Tweak.xm文件里用封装后的logos语法编写代码(底层利用了MSHookMessageEx,MSHookFunction函数,使用 Object-C 的runtime特性发送了method_setImplementation消息)然后theos自动打包成dylib,上传到/Library/MobileSubstrate/DynamicLibraries/里面后,重启Springboard, 利用MobileLoader寻找目录并根据dylib的同名plist文件加载里面的dylib动态库,这时候当我们再打开APP后执行方法时,方法就被替换了。
Cydia Tweak--Cydia Substrate的更多相关文章
- iOS 12.0-12.1.2 越狱教程
unc0ver V3.0.0~b29 越狱工具已经开始公测,支持搭载 A8X-A11 处理器的 iOS 12.0-12.1.2 设备完整越狱,Cydia 商店和 Substrate 插件可正常安装并运 ...
- .deb文件打包
最近因项目需要,需要把文件夹打包为.deb格式的包,幸亏一位朋友帮忙指导了我一个晚上,才得以完成,这里再次对他表示感谢. 整理打包流程如下: 请先参考此博客内容,了解deb文件打包 如何制作Deb包和 ...
- 一步一步实现iOS微信自动抢红包
微信红包 前言:最近笔者在研究iOS逆向工程,顺便拿微信来练手,在非越狱手机上实现了微信自动抢红包的功能. 此教程所需要的工具/文件 yololib class-dump dumpdecrypte ...
- (转)deb制作文件详解
转自:http://blog.chinaunix.net/uid-16184599-id-3041024.html 如何制作Deb包和相应的软件仓库,其实这个很简单.这里推荐使用dpkg来进行deb包 ...
- deb包的2种安装安装方法
一.cydia重启自动安装:用ifunbox进入//var/root/Media/Cydia/AutoInstallCydia/AutoInstall 需要分别单独建立,注意大小写.然后把你要安装的d ...
- 一步一步实现iOS微信自己主动抢红包(非越狱)
前言:近期笔者在研究iOS逆向project,顺便拿微信来练手,在非越狱手机上实现了微信自己主动抢红包的功能. 题外话:此教程是一篇严肃的学术探讨类文章,只用于学习研究,也请读者不要用于商业或其它非法 ...
- iphone越狱-------平刷回越狱前(未越狱)状态
众所周知,iPhone采用了沙盒机制,应用之间不能任意的访问,所以很多机友在拿到iPhone后,往往选择进行越狱,但是有时候,越狱的手机有的时候在安全.性能.流畅性等方面表现并不如意,所以只好寻求重新 ...
- 用dpkg命令制作deb包方法总结
用dpkg命令制作deb包方法总结 如何制作Deb包和相应的软件仓库,其实这个很简单.这里推荐使用dpkg来进行deb包的创建.编辑和制作. 首先了解一下deb包的文件结构: deb 软件包里面的结构 ...
- iOS逆向之一 工具的安装和使用
iOS逆向之一-工具的安装和使用 最近在学习iOS安全方面的技术,有些东西就记录下来了,所有有了这篇文章.顺便也上传了DEMO,可以再这里找到这些DEMO的源码:dhar/iOSReProject 越 ...
随机推荐
- 练习六十七:HTML练习
题目:一个html文件,找出里面的链接 代码: from html.parser import HTMLParser import urllib.request class myhtml(HTMLPa ...
- spark on yarn,cluster模式时,执行spark-submit命令后命令行日志和YARN AM日志
[root@linux-node1 bin]# ./spark-submit \> --class com.kou.List2Hive \> --master yarn \> --d ...
- Vim Plugins for Linux
Usage 1.Set up Vundle: git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vi ...
- Android中的APinner2
Spinner提供了从一个数据集合中快速选择一项值的办法.默认情况下Spinner显示的是当前选择的值,点击Spinner会弹出一个包含所有可选值的dropdown菜单,从该菜单中可以为Spinner ...
- Abbott's Revenge UVA - 816 (输出bfs路径)
题目链接:https://vjudge.net/problem/UVA-816 题目大意: 有一个最多包含9*9 个交叉点的迷宫.输入起点,离开起点时的朝向和终点,求一条最短路(多解时任意输出 一个即 ...
- [转]使用jquery dataTable
本文转自:http://blog.csdn.net/llhwin2010/article/details/8663753 jQuery 的插件 dataTables 是一个优秀的表格插件,提供了针对表 ...
- codeblocks 控制台输出乱码
解决办法如图 如果你和我用的一样是kde环境 把Terminal to launch console programs那个选项改成 上图 konsole -e 如果你用的是gnome环境 ...
- 如何才能够写出优美的C代码呢?
转载自http://developer.51cto.com/art/201601/503802.htm 面向对象的语言更接近人的思维方式,而且在很大程度上降低了代码的复杂性,同时提高了代码的可读性和可 ...
- PHP的htmlspecialchars、strip_tags、addslashes解释
第一个函数:strip_tags,去掉 HTML 及 PHP 的标记 注意:本函数可去掉字串中包含的任何 HTML 及 PHP 的标记字串.若是字串的 HTML 及 PHP 标签原来就有错,例如少了大 ...
- Andrew Ng 的 Machine Learning 课程学习 (week2) Linear Regression
这学期一直在跟进 Coursera上的 Machina Learning 公开课, 老师Andrew Ng是coursera的创始人之一,Machine Learning方面的大牛.这门课程对想要了解 ...