若是你对iOS逆向工程有所了解,那么你对Tweak并不陌生。那么由Tweak咱们又会引出Theos, 那么什么是Theos呢,简单一句话,Theos是一个越狱开发工具包,Theos是越狱开发工具的首先,由于其最大的特色就是简单。大道至简,Theos的下载安装、编译发布都比较简单,越狱开发中另外一个经常使用的工具是iOSOpenDev,由于本篇的主题是Theos,因此对iOSOpenDev不作过多赘述。本篇博客的主题是Thoes的安装及其使用。
1、Theos的配置与安装
Theos的配置与安装算是比较简单的,按照官方给的步骤来操做,问题不大。Theos的官方文档地址“官方Wiki”,其中给出了如何安装和配置Theos, 本部份内容也是按照官方的Wiki来提供的,固然进行该部分操做时,要保证你本地已经安装了Homebrew, 可使用brew命令来安装一些依赖包。brew其实相似于Linux中的yum或者apt-get,就是一个包管理工具。若是你本地没有安装brew,那么请求自行Google,从而完成对brew的安装。
1.安装dpkgphp
sudo brew install dpkg
复制代码
dpkg是Theos依赖的工具之一,dpkg是Debian Packager的缩写。咱们可使用dpkg来制做deb,Theos开发的插件都将会以deb的格式进行发布的。因此我在安装Theos以前要安装dpkg, 固然此处咱们使用强大的brew来完成dpkg的安装。安装的具体过程以下所示:
ios
sudo brew install ldid
复制代码
在Theos开发插件中,iOS文件的签名是使用ldid工具来完成的,也就是说ldid取代了Xcode自带的Codesign。下方就是ldid的安装过程。git
git clone --recursive https://github.com/theos/theos.git
复制代码
由于咱们的Theos通常是安装在/opt/目录下的,因此先cd到/opt目录下,而后从github上相关的地址clone下来便可,步骤以下(下方安装过程挺长,请耐心等待):github
下载好Theos后,要修改一下文件的权限,以下命令bash
sudo chown (id−u):(id−u):(id -g) theos
复制代码
至此,Theos安装完毕,就能够开启你的Theos之旅了
2、使用Theos建立、编译、安装使用工具
上面咱们搭建好Theos的环境后,接下来就开始使用咱们的Theos来作些事情了。接下来咱们将要使用Theos来建立一个使用工具,并进行编译,编译后安装到咱们的越狱手机上。接下来来看一下这一系列的步骤。
1.配置$THEOS微信
export THEOS=theos文件所在路径
复制代码
进入到咱们要建立实用工具的目录中,使用export定义以下的环境变量,以下所示。下方命令比较简单,你能够这么理解,就是使用export定义了一个变量这个变量的名字是THEOS,该变量中存储的值是/opt/theos。后边这个路径就是上述咱们安装theos的路径了,若是你要使用该路径的话,使用$THEOS代替便可。固然该变量只在当前终端中可用。以下所示。
app
$THEOS/bin/nic.pl
复制代码
接下来咱们就要使用theos来建立咱们的工程了,建立工程也是比较简单的,就是调用咱们theos目录中bin下的nic.pl命令。具体执行以下所示。在执行nic.pl命令后,会让你选择新建工程的模板,目前theos中内置的是12套模板,固然你能够从网上下载其余的模板。固然咱们此处建立的是application_modern类型的工程,因此咱们就选2便可,固然,若是你想建立tweak,那么就选11便可,下方咱们选择的是第二个模板。框架
在选择模板后,紧接着会让你作一系列的操做,这一些列的操做和Xcode新建iOS工程的步骤相似。ssh
(1)输入你的工程的名字(Project Name,必选项),此处咱们工程的名字是FirstTheosApplication。iphone
(2)输入包名(Package Name),包名的命名规则通常是大家公司域名的倒写,而后后边加上你的工程名字,此处我就随便写了一个,就是下方的com.ludashi.firsttheosapplication。
(3)输入做者的名字(Author/Maintainer Name), 此处咱们输入的是Mr.LuDashi
(4)而后如数类名的前缀(Class name prefix), 此处咱们输入的是CE。
通过上述配置后,咱们的工程就建立好了。
export SDKVERSION=9.3
export THEOS_DEVICE_IP=ios_device_ip
复制代码
接着咱们要作一些编译打包前的准备工做,SDKVERSION是编译工程时所使用的SDK,由于本机Xcode中是9.3的SDK,因此咱们知道的SDKVERSION是9.3。指定完编译所需的SDK后,咱们须要指定打包后的文件所安装设备的IP地址,使用THEOS_DEVICE_IP来指定。下方的IP地址是一个越狱手机的IP地址。
在指定这个设备IP以前,你要保证你的越狱设备安装了OpenSSH,而且能够在Mac的终端上进行ssh登陆。
make
复制代码
作好编译前的准备工做后,紧接着就是编译咱们刚才建立的工程了。首先进入到咱们的firsttheosapplication目录中,执行make命令进行编译。以下所示。
make package
复制代码
编译完成后,咱们要讲项目进行打包,这样咱们的越狱设备才能进行安装。下方是调用make package命令进行项目的打包。打包后会生成后缀名为deb的安装包。
make install
%hook 指定须要hook的类名,以%end结尾
%log 用来打印log的,将信息输入到syslog中,如%log((NSString *)@"ZeluLi")
%orig 执行被hook函数的原始代码,相似于super.method功能
%group 该指令用于%hook的分组,%group后边跟的是组名,%group也是必须以%end结尾,其中能够包含多个%hook
%init 该指令用来初始化某个%group,一个group只有被初始化后才可生效,init必须在hook中进行执行。
%ctor tweak的构造器,用来初始化,若是不显式定义,Theos就会自动生成一个%ctor,并在其中调用%init(_ungrouped). 如:%ctor { %init(_ungrouped)}
%new 该指令用来给现有的class添加一个新的函数。与Runtime中的class_addMethod相同。
%c 该指令用来获取一个类的名称,相似于objc_getClass。
上述就先涉及这么多,更详细的请参加:[http://iphonedevwiki.net/index.php/Logos](http://iphonedevwiki.net/index.php/Logos)
复制代码
5. control文件
control文件中存储的内容记录了deb包管理系统所需的基本信息,会被打包进deb包里。下方就是control中内容,其中存储的就是一些包名、工程名、版本、做者等等,与打包安装后在Cydia中看到的信息相同。
做者:青玉伏案
出处:http://www.cnblogs.com/ludashi/