一、安装和配置
Theos是一个越狱开发工具包,Logos语法。
1. 指定安装路径
export THEOS=/opt/theos
2. 从github下载
sudo git clone --recursive git://github.com/DHowett/theos.git $THEOS
3. 配置ldid
. 用来签名iOS可执行文件的工具,用以在越狱iOS中取代Xcode自带的codesign;
. 下载地址:http://joedj.net/ldid
. 放到/opt/theos/bin/
. 赋予可执行权限:sudo chmod 777 /opt/theos/bin/ldid
4. 配置 CydiaSubstrate
最简单的方法,将越狱后的手机,连上Mac ,然后使用打开iFunBox,将 “/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate“ 拷贝到OSX 中,
并且将其重命名为libsubstrate.dylib 后放到"/opt/theos/lib/" 中。
5. 配置dpkg-deb
. Deb 是越狱开发安装包的标准格式,dpkg-deb 是用于操作deb文件的工具;
. 下载dm.pl, github download dm.pl (https://raw.githubusercontent.com/DHowett/dm.pl/master/)
. dm.pl 重新命名为 “dpkg-deb”, 将dpkg-deb 放到"/opt/theos/bin" 目录下
. sudo chmod 777 /opt/theos/bin/dpkg-deb
二、Theos使用
1. 创建工程
执行:/opt/theos/bin/nic.pl , 按提示生成tweak工程;
2. 配置工程
a. Makefile
.指定处理器架构:ARCHS = armv7 arm64
.指定SDK版本:TARGET = iphone:8.1:8.0 (iphone:Base SDK:Deployment Target)
. 导入framework:iOSREProject_FRAMEWORKS = UIKit CoreAudio
. private framework:iOSREProject_PRIVATE_FRAMEWORKS = AppSupport ChatKit
注:如果tweak支持iOS7 iOS8,但private fw只存在7中,就不能这样写,这种情况通过弱链接或dlopen 系列函数动态调用。
. 链接Mach-O对象:iOSREProject_LDFLAGS = -lx (包括.dylib,.a,.o)
b. Tweak.xm
. Logos 常用预处理指令:%hook, %log, %orig, %group, %init, %ctor, %new, %c;
c. control
记录了deb包管理系统所需的基本信息;
d. plist
描述了tweak的作用返回;
Filter 下是array,分3类:Bundles,Classes,Executables;
注:当Filter下有不同类的array时,需要添加一个Mode:Any。
3. 编译+打包+安装
a. 编译:执行 make
b. 打包:执行 make package
c. 安装:
. iFunBox 安装;
. Ssh命令:在Makefile最上一行加本机IP(如:THEOS_DEVICE_IP = iOSIP);
然后调用 make package install 完成编译打包安装;
注:打包时遇到了lzma错误,具体解决方法见:iOS 逆向常见问题。
三、Demo
见 iosregreetings,实现了锁屏页面弹窗和修改时间下面的文字信息。