记录自己安装 Theos 的过程 以及一些小坑

编写 Tweak 有两种方式,分别是 Theos 以及 iOSOpenDev,两者的关系就像是 git 跟 SourceTree 的关系。为了对 iOSOpendev 在 GUI 的背后做的操作有了解,我先选择了一条比较难走的路,使用 Theos 进行 Tweak 开发。以下大部分内容参考自逆向圣经《iOS应用逆向工程》。

1. 安装 iOS SDK

都接触逆向了,没理由不是 iOS 开发者吧,没理由没安装 iOS SDK 吧。安装完 Xcode 之后,需要继续安装 Command Line Tools(CLT):

1
xcode-select --install

2. 配置环境变量

在你的 bash 配置文件中写入环境变量,由于我使用的 on-my-zsh,所以:

1
2
vim ~/.zshrc
export THEOS=/opt/theos

上面的是推荐路径,当然你也可以安装在其他路径。

3. 获取 Theos

Theos 的作者是 Dustin Howett,但是在 2015 时,原作者已经没有时间投入到其中,所以转交到了 Theos 这个团队来维护了。因此这里使用的路径跟原书不同,但其实也会自动跳转了:

1
sudo git clone https://github.com/theos/theos $THEOS

结束之后需要在 $THEOS 目录中执行一下 git 命令,安装一些 submodule:

1
sudo git submodule update --init --recursive

4. 安装 ldid

ldid 是专门用来签名 iOS 安装包的工具,用来取代 Xcode 自带的 codesign。原来书中提供的 github 下载链接已经失效了,结合上上面 Theos 维护更替的现实,真是颇有一番时过境迁,物是人非的感觉。我这里使用 HomeBrew 来安装:

1
brew install ldid

ldid 的原作者是 Saurik(Jay Freeman),他博客中的这篇文章有提到 ldid 的原理。另外 ldid 在 Saurik 开发之后是经过了 rpetrich 深加工的,可以在他的 github 上找到 ldid 的源码


原书中教程在安装完 ldid 之后,还需要执行 $THEOS/bin/ 中的某个脚本来配置 MobileSubstrate 环境,但是新版本的的 Theos 已经移除了这个脚本了。根据网上的资料,新版本已经不需要这个脚本了。这里需要等我完成逆向实践之后验证一下。

5. 安装 dpkg

dpkg 是一个专门用来制作 deb(Debian Package) 的工具,我们使用 Theos 开发出来的所有插件都将会使用 deb 格式来发布。可以使用 brew 也可以使用 MacPort。我使用的是 macport,在这里下载 pkg 安装包,安装完成之后运行一下命令,将 MacPort 更新到最新版:

1
sudo port selfupdate

安装 dpkg:

1
sudo port install dpkg

期间需要安装 dpkg 不少的依赖工具,所以时间会略微有点漫长。dpkg 的功能其实相当强大,包括打包,安装,卸载等等。它可以在 Mac 或者 iOS 中使用,不仅仅是 Theos 的开发需要依赖它,还可以在 iOS 的命令行中执行 dpkg -i xxx.deb 来安装某个 deb 文件:

1
dpkg -i XXX.deg

当然,也可是使用 iFile 来进行图形化界面的操作。


到这里,theos 的安装就完成了,关于 theos 的初步使用,可以留意我的下一篇逆向实践文章。

参考资料

  1. 《iOS应用逆向工程》,机械工业出版社