MobileSubstrate

MobileSubstrate

  Cydia
Substrate
 (formerly called MobileSubstrate)
is the de facto framework that allows 3rd-party
developers to provide run-time patches (“Cydia Substrate extensions”) to system
functions.

  MobileSubstrate也叫CydiaSubstrate,是一个基础架构,允许第三方开发者为系统功能提供CydiaSubstrateExtension(也叫做tweaks)。

  Cydia Substrate consists of 3 major components: MobileHooker,
MobileLoader and
safe
mode
.

  CydiaSubstrate提供3个主要的组件:MobileHook,MobileLoader,safeMode。

MobileHook

  MobileHooker is used to replace system functions. This
process is known as hooking. There are 2 APIs that one would
use:

  

  MSHookMessage() will replace the implementation of the
Objective-C
message -[class selector] by replacement,
and return the original implementation. To hook a class method,
provide the meta class retrieved from objc_getMetaClass in the
MSHookeMessage(Ex) call and see example note below. This dynamic replacement is
in fact a feature of Objective-C, and can be done using method_setImplementation. MSHookMessage()
is not thread-safe and has been deprecated in favor of
MSHookMessageEx()
.

  MSHookMessage()非纯种安全,已经被deprecated。

  MSHookFunction() is like
MSHookMessage() but is for C/C++ functions. The replacement
must be done at assembly level
. Conceptually, MSHookFunction()
will write instructions that jumps to the replacement function, and allocate
some bytes on a custom memory location, which has the original cut-out
instructions and a jump to the rest of the hooked function. Since on
iOS by default a memory page cannot be simultaneously writable and executable, a
kernel patch must be applied for MSHookFunction() to work
.

  ios中黑夜一块内存不能同时具有写&执行的权限,需要打一个kernel patch才能使MSHookFunction()起作用。

MSHook Example
Code

1、Using MSHookFunction:

  

2、Using MSHookMessageEx:

 

3、Note that if you are hooking a class method, you have to put a
meta-class in the class argument,
e.g.

参考:http://iphonedevwiki.net/index.php/MobileSubstrate

时间: 2024-12-19 05:49:22

MobileSubstrate的相关文章

[原]MobileSubstrate 工作流程

[附-腾讯安全管家替换 MobileSubstrate 的流程] com.qq.mqqsecure.deb-postinst--->QSCommand--->QSTempRunner

苹果ipa软件包破解笔记

苹果的验证机制: Appstore上的应用都采用了DRM(digital rights management)数字版权加密保护技术,直接的表现是A帐号购买的app,除A外的帐号无法使用,其实就是有了数字签名验证,而app的破解过程,实质也是去除数字签名的过程.去除过程包括两部分,如下所示: ipa文件都是使用苹果公司的FairPlay DRM技术进行加密保护 appsync没有装是不能安装的,程序没有破解是不能运行的 条件一,设备越狱,获得root权限,去除掉设备上的签名检查,允许没有合法签名的

iOS底层基础知识-文件目录结构

一:iOS沙盒知识 出于安全考虑,iOS系统把每个应用以及数据都放到一个沙盒(sandbox)里面,应用只能访问自己沙盒目录里面的文件.网络资源等(也有例外,比如系统通讯录.照相机.照片等能在用户授权的情况下被第三方应用访问) 1:MyApp.app 该目录包含了应用程序本身的数据,程序打包的时候的资源文件和一些本地文件就是存放在这个目录下的. 程序的可执行程序.plist文件也在这个目录下. 这个目录不会被iTunes同步 2:Documents 使用这个目录来保存关键数据.关键数据指那些应用

iOS开发——逆向工程OC篇&静态分析及使用

逆向工程-静态分析及使用 看到一篇装逼技术,有机会好好研究一下..... 最近在学习IOS逆向工程,查看网络上的资料也不是太多,边学边总结一下. 首先学习资料: 念茜(大神)的博客: http://nianxi.net <ios应用逆向工程 分析与实战> ----------------------------------------------------凌乱的分割线------------------------------------------ 其次讲讲要用到的工具(ios安装工具使用

使用Reveal来查看别人的APP界面+白苹果不刷机解决方案

Reveal这个强大的界面调试工具,可以实时查看.修改view的属性,大体上实现了iOS程序员梦寐以求的功能.比如,有时候我们添加了一个view,但是那个view死活不显示出来,这时候祭出Reveal,很容易就能找到这个view,有可能它被遮挡起来了,有可能被我们不小心放到了superView的外面,等等,方便的很. 很早就知道Reveal可以用来查看其他app的界面,但一直没试过.今天为了抄别人的一个界面实现,用Reveal搞了一把. 准备条件: 已经越狱的iPhone: iPhone上安装了

Reveal查看任意app的高级技巧

本文转载至 http://blog.csdn.net/wbdwsqwwn/article/details/40476139 Reveal是一个很强大的UI分析工具,与其他几个功能相近的工具(比如PonyDebugger)相比,其最大的特点就是非常直观,用来查看app的UI布局非常方便.其常规用法是将framework集成至Xcode工程中,可参见Reveal的官网http://revealapp.com/,但我们这次讲述的却是非常规用法. 在12/21的#阿里技术嘉年华#上,我给听众展示了使用R

《iOS应用逆向工程》学习笔记(二)iOS系统目录结构(部分)

首先下载个iFile,可以用来直观地查看iOS系统的目录结构. 下面记录一些关键的iOS目录结构: /var:"variable"的简写,存放一些经常更改的文件,例如日志.用户数据.临时文件等.其中/var/mobile/Applications下存放了所有App Store App. /Applications:存放所有的系统App和来自Cydia的App,不包括App Store App.越狱的过程把/Applications变成了一个符号链接,实际指向/var/stash/App

&lt;转&gt;iOS逆向工程:Reveal查看任意app的高级技巧!

Reveal查看任意app的高级技巧 Reveal是一个很强大的UI分析工具,与其他几个功能相近的工具(比如PonyDebugger)相比,其最大的特点就是非常直观,用来查看app的UI布局非常方便.其常规用法是将framework集成至Xcode工程中,可参见Reveal的官网http://revealapp.com/,但我们这次讲述的却是非常规用法. 在12/21的#阿里技术嘉年华#上,我给听众展示了使用Reveal查看任意app的效果,估计是当时所展示的工具中最亮眼的一个.既然如此,我就提

【转】iOS平台的应用程序调试与分析

转自:看雪学院的文章 iOS平台的应用程序调试与分析 作者:zhuliang转载请保证文章完整并注明来自看雪或cd-team 本文阐述如何在iOS平台上对应用程序进行调试与分析,旨在指导新手分析iOS程序,高手请无视.内容包括软件硬件的准备.代码的解密.符号信息的获取.用gdb调试等,最后以京东LeBook为例子进行演示.1.为什么要进行调试与分析研究iOS程序有很多用处,比如:找bug或者漏洞,想知道某程序有没有漏洞或者bug.某程序能实现某功能,我想知道如何实现,如ios6发短信功能,还有比