iOS越狱开发环境(Theos)的配置(2017,2)

越狱开发环境配置(2017.2)

自从iOS9之后,越狱的用户越来越少,相应的从事iOS越狱开发的人员也越来越少,曾经的比较流行的教程也有过时的现象产生.

因为公司业务要求,最近开始牵涉到一些iOS越狱开发领域,就整理了一些坑点,方便以后自己再掉进去.

以下内容采用了不少该网址的内容,在此表示感谢!

https://github.com/yohunl/FlexInjected/tree/14137c231e94e881c603c83d91fe4fb20700292b

Theos 安装

Thoes介绍

TheOS被设计为一个在基于Unix平台开发IOS程序的集成开发环境,它给我们准备好了一些代码模板、预置一些基本的Makefile脚本,这样我们开发一个tweak就会变得方便的多,这里我们不说简单的多,是因为其配置还是稍显繁琐的,并且,也不能像我们通常开发xcode工程那样方便的调试.

Thoes的安装

1.可以使用git命令将Theos环境下载下来(如果没有权限,前面加上sudo),Theos是放在gitHub上的,使用git命令clone下来很方便,这里注意一点虽然可以放在任意目录下面,但是官方建议大家放在/opt/下.可以打开"终端"输入 export THEOS=/opt/theos #这个是建立一个环境变量方便后面的操作(引用这个环境变量是用$THEOS),

这种建立环境变量的方式,只是在当前终端中起作用了,关闭终端后又得重新设置,为了避免每次都建立这个环境变量,我们可以建立一个永久的环境变量
编辑~/.profile文件,在其中添加export THEOS=/opt/theos/,这个环境变量就是永久的了. ps:怎么查看定义了哪些环境变量呢? 终端中输入命令env!

git clone --recursive https://github.com/theos/theos.git $THEOS

坑点从这里开始,之前老的教程比如《iOS应用逆向工程》一书中需要我们配置CydiaSubstrate.framework,书中需要我们运行bootstrap.sh脚本并且需要我们从手机上拷贝等方式获得该文件.而最新版的已经没有这个bootstrap.sh脚本文件了,并且已经集成了最新的cydia Substrate,在目录Vendor/lib下 这里的cydia使用的是framework模式了。

2.配置用来签名的ldid,用来在越狱的iOS中取代Xcode自带的codeSign。

brew install ldid

3.配置dpkg-deb 新版的Theos,并没有内置 dpkg-deb,需要用brew来安装dpkg

brew install dpkg

注意这里隐藏了两个坑,待会讲解。

Thoes的使用

首先创建一个简单的demo来实(cai)验(keng)下

$THEOS/bin/nic.pl

会出现以下界面

NIC 2.0 - New Instance Creator
------------------------------
  [1.] iphone/activator_event
  [2.] iphone/application_modern
  [3.] iphone/cydget
  [4.] iphone/flipswitch_switch
  [5.] iphone/framework
  [6.] iphone/ios7_notification_center_widget
  [7.] iphone/library
  [8.] iphone/notification_center_widget
  [9.] iphone/preference_bundle_modern
  [10.] iphone/tool
  [11.] iphone/tweak
  [12.] iphone/xpc_service
Choose a Template (required): 

只要出现了以上界面那么说明目前都是正常的(还没到坑)
之后是一些和以前教程里面一样的一些信息的填写以及四个文件内容的操作,我这里不再赘述,主要讲坑。坑主要出现在现在Theos不再内置dpkg-deb,两个大坑都在这。

在我们使用一下命令打包文件并安装的时候

make package install

第一次会报以下错误

> Making all for tweak testOne…
make[2]: Nothing to be done for `internal-library-compile'.
> Making stage for tweak testOne…
dpkg-deb: error: obsolete compression type 'lzma'; use xz instead

Type dpkg-deb --help for help about manipulating *.deb files;
Type dpkg --help for help about installing and deinstalling packages.
make: *** [internal-package] Error 2

我查找了一些资料后发现,这个错误是dpkg的锅,随着版本的升级,打包格式发生了变化

dpkg-deb: error: obsolete compression type 'lzma'; use xz instead

解决方案是按以下路径找到该文件修改其内容
/opt/theos/makefiles/package/deb.mk
找到第六行

_THEOS_PLATFORM_DPKG_DEB_COMPRESSION ?= lzma

将其改为

_THEOS_PLATFORM_DPKG_DEB_COMPRESSION ?= xz

好了接下来我们继续打包安装,和刚才一样输入:

make package install

在输入一次root密码之后出现以下内容:

(Reading database ... 4630 files and directories currently installed.)
Preparing to replace firsttest 0.0.1-23+debug (using /tmp/_theos_install.deb) ...
Unpacking replacement firsttest ...
dpkg-deb: file `/tmp/_theos_install.deb' contains ununderstood data member data.tar.xz     , giving up
dpkg: error processing /tmp/_theos_install.deb (--install):
 subprocess dpkg-deb --fsys-tarfile returned error exit status 2
Errors were encountered while processing:
 /tmp/_theos_install.deb
make: *** [internal-install] Error 1

重点在这一句:

dpkg-deb: file `/tmp/_theos_install.deb' contains ununderstood data member data.tar.xz     , giving up

看到了吧,又是dpkg的锅,我拿梯子出去查了查说是因为dpkg升级后的压缩格式问题,原网址在这:
http://stackoverflow.com/questions/21013325/dpkg-error-contains-ununderstood-data-member

上面要求的替换内容是

$(ECHO_NOTHING)COPYFILE_DISABLE=1 $(FAKEROOT) -r dpkg-deb -b "$(THEOS_STAGING_DIR)" "$(_THEOS_DEB_PACKAGE_FILENAME)" $(STDERR_NULL_REDIRECT)$(ECHO_END)

将其替换成

$(ECHO_NOTHING)COPYFILE_DISABLE=1 $(FAKEROOT) -r dpkg-deb -Zgzip -b "$(THEOS_STAGING_DIR)" "$(_THEOS_DEB_PACKAGE_FILENAME)" $(STDERR_NULL_REDIRECT)$(ECHO_END)

那么问题来了,你会发现你没有找到之前的你只有这个:

$(ECHO_NOTHING)COPYFILE_DISABLE=1 $(FAKEROOT) -r $(_THEOS_PLATFORM_DPKG_DEB) -Z$(_THEOS_PLATFORM_DPKG_DEB_COMPRESSION) -b "$(THEOS_STAGING_DIR)" "$(_THEOS_DEB_PACKAGE_FILENAME)"$(ECHO_END)

解决方案是,恩,管它呢长得像也一样干掉,我的做法就是把上面的替换成中间的哪一行。

然后再使用

make package install

接下来你就会发现一切运转正常了!

附带一张我写的demo成功的图片:

WechatIMG1.jpeg

本人也是刚接触越狱开发不久,各位如果对越狱开发感兴趣可以联系我大家一起交流!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容