探索首个越狱iOS系统应用:通过Theos Hook技术实现

更新:11-08 名人轶事 我要投稿 纠错 投诉

大家好,关于探索首个越狱iOS系统应用:通过Theos Hook技术实现很多朋友都还不太明白,今天小编就来为大家分享关于的知识,希望对各位有所帮助!

Mac 操作系统x: 10.11.5

xcode:xcode7.3.1

xcode sdk:ios9.3

越狱手机:iphone4,ios7

有几点需要注意:

1;升级mac系统,安装xcode是相当麻烦的。具体解决过程请参见Xcode编译器安装过程说明。

2; mac os x系统和越狱手机必须在同一个局域网内

3; iOS 手机必须已越狱并安装了openssh。

如上面的截图所示,安装了本实验的两个重要源:Cydia Substrate 和openssh。

其中Cydia Substrate包含theos工具,openssh可以让电脑远程控制ios设备。

openssh的默认登录密码是:alpine。为了设备安全,通常建议更改密码。

ssh-keygen -R 服务器端IP或URL 清除旧的ssh登录证书

2:theos安装及使用流程

手动下载和配置theos非常麻烦。以下是准备好的专家:前往https://github.com/DaSens/Theos-Script 下载脚本。

1:将脚本放置在桌面上。文件夹的内容是

进入该文件夹并运行TheosScript.sh脚本文件。一路运行,theos安装配置完成。

发现一个额外的文件选项

opt中就是我们需要的工具,theos。同时这也是我们工具的路径,后面会讲到。

2:在创建theos项目之前,我们首先创建目标hook app。

介绍一下这个应用程序

一个;该应用程序在viewController 界面上创建一个红色按钮。单击此按钮,按钮上会出现“you are ok”字样。

乙;该应用程序的捆绑ID是com.antiy.chendan

c;这个应用程序的名称是test1

之所以hook app没有发送短信的私密功能,是因为测试iPhone的SIM卡无效。

下面是这个app的运行结果

目标应用程序已经存在,现在需要做的是挂钩它的- (void)buttonClick:(id)sender 函数,这样当按下按钮时,它会显示你在控制之下。

3:创建theos项目

a: 在桌面上创建一个test_hook 文件夹。该文件夹用作项目文件夹。

b:cd 进入该文件夹并在终端中执行/opt/theos/bin/nic.pl

将会开始theos项目创建过程,在此过程中会一一配置项目参数。

将首先出现

选择11

然后会要求输入Project Name:(输入创建的theos项目的名称,本例为test1)

然后你会被要求输入Package Name:(输入hook应用程序的bundle ID,在本例中为com.antiy.chendan)

然后要求输入Author/Maintainer Name:(输入作者姓名,这个和项目关系不大,但是这个信息最终会显示在Cydia源码中,本例是chendan)

然后系统会要求您输入挂钩应用程序的捆绑ID:(在本例中为com.antiy.chendan)

最后输入SpringBoard启动项:empty(留空,回车即可)

经过这个过程,theos项目就创建完成了,如下图

我们分别介绍一下这四个文件的含义。

本演示中不会使用control: 控制文件。

test1.plist: 目标钩子应用程序的bundle ID存储在这里,可以随时更改。

Makefile: 重新打包配置文件

这里编码了Tweak.xm:hook的具体细节,主要是利用logos标识符进行hook操作

Makefile的最终文件格式如下

在Makefile的开头,这里的大部分项目都没有,需要配置。

export THEOS=/opt/theos:配置文件执行路径(没有这个则找不到tweak.mk文件,终端会报错)

THEOS_DEVICE_IP=192.168.202.232:挂钩的越狱设备的IP地址。上面说了,mac电脑和越狱设备必须在同一个局域网内,否则无法用openssh登录进行操作。

ARCHS=armv7arm64:不同的iPhone型号有不同的配置。在本例中,iPhone 4 使用armv7。如果不确定的话,可以带上所有armv7、armv7s、arm64。

TARGET=iphone:latest:9.3:xcode使用的sdk

TWEAK_NAME=test1:teak 项目的名称。这是在创建项目时配置的,无法更改。

test1_FILES=Tweak.xm:目标钩子文件,四个文件之一

test1_FRAMEWORKS=UIKit:hook操作时使用的ios框架。如果使用私有函数,则需要添加test1_PRIVATE_FRAMEWORKS=

其余的就不用介绍了。安装完成后,终止进程并重新启动SpringBoard。

接下来给出Tweak.xm的hook细节。

现在一切都准备好了,你可以开始挂钩了。

使用终端cd进入你创建的tweak项目目录,然后执行make package install,然后输入两次ssh连接密码(ssh默认密码alpine),

然后设备会重启SpringBoard,然后我们再次打开HOOK APP,发现按钮的点击方法已经被替换了。

三:Cydia源码

在Cydia源码中查看以下内容

可以看到这个app已经成功hook了。此后无论Xcode运行多少次,这个函数仍然被hook,并且这里的原始代码无效。

如果你想恢复之前的app,可以进入这个test1

然后卸载它。

而且我发现通过theos创建然后安装到iPhone上的应用程序权限最高,无法删除。不得不说,越狱开发实在是有点变态。

这也是那些基于系统的定制开发,在Android上很常见。在Apple上,只有越狱的应用程序才能获得此权限。一旦系统更新且不再越狱,IOS就会收回该应用程序的此权限。

四:原理浅探

1. Cydia 基板和移动基板

Cydia Substrate,原名Mobile Substrate,现已正式更名为Cydia Substrate。

是cydia插件/软件越狱后运行的基础依赖包。提供软件运行的公共库,可用于动态替换

内存中的代码、数据等。因此,要在越狱的iOS系统中安装大多数插件,必须先安装Cydia Substrate。

Cydia Substrate主要由3部分组成:MobileHooker、MobileLoader和安全模式。

2.MobileHooker,标志

采用MobileHooker来替代覆盖系统的方法。这个过程称为Hooking(钩子)。主要包含两个函数:voidMSHookMessageEx(Classclass, SEL选择器, IMP替换, IMP *result); voidMSHookFunction(void*function, void* replacement, void** p_original);MSHookMessageEx 主要用在Objective-C 函数中MSHookFunction 主要用在C 和C++ 函数中Logos 语法是为了封装这个函数,让编写hook 代码更加直观。上面的例子使用了logos语法。 MSHookMessageEx和MSHookFunction的用法这里不再介绍。你可以看书或者查相关资料。

3.移动装载机

MobileLoader用于在运行的应用程序中加载第三方dylib。

启动时,MobileLoader 会根据dylib 的同名plist 文件指定的范围,通过dlopen 函数选择性地在不同进程中打开/Library/MobileSubstrate/DynamicLibraries/目录下的所有dylib。

4.安全模式

由于APP程序质量良莠不齐,崩溃在所难免。 Tweak本质上是一个dylib,它寄生在其他人的进程中。如果注入到Springboard等中,系统进程一旦出现错误,可能会导致整个进程崩溃,而崩溃会导致iOS瘫痪。

因此,CydiaSubstrate引入了安全模式。在安全模式下,所有基于CydiaSubstrate的第三方dylib将被禁用,以方便错误检查和修复。

如果你还想了解更多这方面的信息,记得收藏关注本站。

用户评论

微信名字

太酷了!终于可以将App转移到元数据结尾了。

    有5位网友表示赞同!

爱你心口难开

听说这个方法还能修改系统文件?真厉害啊。

    有19位网友表示赞同!

请在乎我1秒

我还在用老版本的手机,不知道这些新功能对我用处不大…

    有15位网友表示赞同!

凝残月

theos hook听起来很专业的样子,我一直想学习一下越狱的知识。

    有6位网友表示赞同!

刺心爱人i

这篇文章应该有很多细节教程吧?我已经按捺不住了,想要动手实践!

    有7位网友表示赞同!

杰克

元数据结尾是什么地方呢?不太懂这个概念。

    有11位网友表示赞同!

殃樾晨

听说元数据结尾是隐藏的功能区,真让人忍不住想去探索!

    有15位网友表示赞同!

枫无痕

越狱的风险很高吗?我有点担心会不会弄坏手机。

    有6位网友表示赞同!

伱德柔情是我的痛。

这篇文章内容很全面吗?可以涵盖所有关于theos hook的知识吗?

    有7位网友表示赞同!

良人凉人

现在用iOS系统,感觉越来越像使用安卓系统了。

    有8位网友表示赞同!

浅巷°

越狱后能解锁哪些功能呢?有没有什么值得推荐的修改?

    有19位网友表示赞同!

采姑娘的小蘑菇

这篇文章适合所有iOS用户阅读吗?还是只有有一定技术基础的人才能理解?

    有9位网友表示赞同!

反正是我

我觉得手机应该有更多的可定制性,越狱确实可以满足这种需求。

    有13位网友表示赞同!

嗯咯

我尝试过越狱,但是很容易失败。希望这篇文章能够提供一些解决方法。

    有11位网友表示赞同!

你身上有刺,别扎我

想了解更多关于theos hook的应用场景,除了转移App到元数据结尾,还有什么其他功能吗?

    有20位网友表示赞同!

念初

现在手机越来越智能化,也许越狱的技术会变得更加普遍。

    有7位网友表示赞同!

摩天轮的依恋

越狱虽然存在风险,但它也为用户提供了一个探索新玩法的空间。

    有17位网友表示赞同!

在哪跌倒こ就在哪躺下

希望开发者能开发出更安全、更稳定的越狱工具!

    有20位网友表示赞同!

长裙绿衣

这篇文章让我对iOS系统和科技的发展有了新的认识。

    有17位网友表示赞同!

【探索首个越狱iOS系统应用:通过Theos Hook技术实现】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:2024年最受欢迎莆田鞋微商排行:十大良心商家推荐一览 下一篇:五笔输入法中的那些难忘字词