Mat*_*toe 28 cocoa-touch objective-c jailbreak ios
在论坛上搜索后,我发现了一个类似的问题,并将它重定向到一个教程,该教程给出了一些关于使用CapitainHook操作SpringBoard的基本指令.
首先,我想只使用普通的%hooks.我能开始的任何暗示?
Mat*_*toe 119
所以,既然我(希望我)现在远离一个使用MobileSubstrate编程的菜鸟,并且看到这个问题非常受欢迎,我决定创建一个答案,涵盖你需要了解的关于这个主题的所有内容.
这个小小的介绍适用于对Objective-C知之甚少且知道自己在做什么的人.
注意:我将把theos安装路径称为$THEOS.这可能是~/theos,/var/theos,/usr/theos...是啊.
最流行的创建MobileSubstrate扩展的方法,也称为调整,是使用Dustin Howett的theos构建套件.细节如下:
所以,我们应该从不是什么开始:
当然,还有什么不做的:
Theos是一个跨平台的开发工具套件,用于在不使用Xcode的情况下管理,开发和部署iOS软件,具有以下功能:
由GNU Make驱动的强大的构建系统,使其Makefiles可以通过安装theos轻松部署到任何地方.
NIC,一个项目模板系统,可以为不同目的创建可立即构建的空项目.
Logos,一个内置的基于预处理器的指令库,旨在使MobileSubstrate扩展开发变得简单并生成最佳代码.
自动包装:Theos能够直接创建DEB包,用于在Cydia中分发,这是越狱场景中最受欢迎的包裹分发方式.
installtheos3.这是一个非常被问到的问题而且太模糊了.由于theos是一整套开发工具,因此询问如何使用它是没有意义的,更具体地说,询问如何使用theos创建软件.
首先,总是手头有Theos Makefile Reference.它涵盖了创建theos Makefile的基础知识,其中包括解决链接问题,为项目添加框架或私有框架.
现在,您可以从头开始创建自己的Makefile,创建您的小theos clone/symlink并开始编码,但theos使这一步更容易.你可以使用nic.pl.
可以在此处找到运行NIC以创建内容的一个非常简单的示例.它非常简单,可以让您立即进行编程.
现在,我们开始回到主题.
首先,内部时不要运行NIC $THEOS/bin.NIC将精确地创建项目目录,并避免在其中创建任何项目$THEOS/bin.因此,您最终会得到一个简单的错误,可以通过在某个地方创建项目目录来避免这种错误.
运行$THEOS/bin/nic.pl并选择iphone/tweak模板.除最后一个字段外,您可能会收到一些您可能知道如何回答的简单信息:MobileSubstrate bundle filter.
由于MobileSubstrate的很大一部分不仅仅是钩子(用你的原始方法/函数切换的库),而且还有加载器(将你的钩子插入某些进程的部分),你必须提供这个基本信息让Loader知道在哪里加载你的调整.此字段只是将插入此项目的应用程序的包标识符.
com.apple.springboard,默认选项是SpringBoard的包标识符,该应用程序是:
因此,在那里进行了许多调整,将应用程序启动时的行为改变为微不足道的行为,就像整个主屏幕UI看起来一样.
现在,NIC生成的目录将包含:
Makefile,您将在其中更改与编译相关的信息control文件,您将在其中更改与包装相关的信息$THEOS命名的符号链接(或快捷方式)theos/Tweak.xm.它已经添加到Makefile中进行编译,因此您可以立即开始编码!现在,你没有SpringBoard的源代码,你无法猜测从哪里挂钩的方法.因此,您需要一个SpringBoard标头集.为此,您需要使用一个名为的工具class-dump-z并将其运行到SpringBoard二进制文件(在iOS文件系统中)以获取头文件,包括应用程序内的所有类声明及其方法.
从那里(涉及到一个猜测和记录方法调用的交易)你可以开始在调整中搞乱你想要的东西.
当然,如果你不挂钩跳板,您可以使用class-dump-z您在其他二进制文件,如会UIKit,MobileSafari等等.
请注意,对于逆转App Store应用程序时,它们将被加密.你需要解密那些(遗憾的是我不允许告诉你操作方法),然后再运行class-dump-z它们.
像首选项捆绑包这样的东西需要私有框架的头文件,在这种情况下需要Preferences框架的头文件.否则你会得到无尽的遗漏声明错误(我想你可以假设).
获取它们与上一步应用的逻辑相同.class-dump-z在这种情况下,运行Preferences二进制文件并将标题扔到您的INCLUDEPATH.这INCLUDEPATH是编译器将寻找你包含的标题的地方#include <stdio.h>.是的,stdio.h是在构建编译器的目录之一INCLUDEPATH!
使用theos Makefile进行编译时,$THEOS/include将其视为您的一部分INCLUDEPATH,这意味着您可以将转储的标题放在那里并稍后包含它们.
(请注意,类转储标头并不总是完美的,因此您可能会遇到一些与标头相关的编译错误,可以通过删除#import指令或更改指令或添加几个声明来轻松修复. )
%c指令或objc_getClass函数,如定义那样<objc/runtime.h>得到它.示例:[%c(SBUIController) sharedInstance],[objc_getClass("SBUIController") sharedInstance].等等,好的部分在哪里?我在哪里学习编码Tweak.xm?
那么,最初的问题实际上是如何启动MobileSubstrate调整编程?.你们都进行了设置,希望放置所有标题,准备输入make并查看使用theos神奇编译的项目.
您现在需要做的就是实际挖掘您的标题或拆卸并进行挂钩,呼叫等等!
Logos Reference包含如何挂钩和使用Logos的其他功能,而devwiki上的MobileSubstrate文章也是一本很好的读物.
祝好运.如果有任何疑问,请不要犹豫加入irc.saurik.com #theosIRC频道.这是讨论与theos相关的主题并提出问题的好方法.我和其他非常聪明的人一起在那里;)