当iPhone启动的时候,我们所看到的界面以及进行交互的界面是系统的springboard进程,bundle id为com.apple.springboard。通过ssh登录iPhonessh root@192.168.2.24
, 查看进程信息ps -e | grep SpringBoard
。
创建theos工程
创建tweak工程:/opt/theos/bin/nic.pl
1 | NIC 2.0 - New Instance Creator |
选择11创建tweak工程
1 | //项目名称 |
theos工程文件
Makefile 默认生成信息如下
1 | #theos通用头文件 |
tweak.xm文件:xm
中的x
代表这个文件支持Logos语法,如果后缀名是单独一个x
,说明源文件支持Logos和C语法;如果后缀名是xm
,说明源文件支持Logos和C/C++语法。
- %hook 指定需要hook的class,必须以%end结尾
- %log 该指令在%hook内部使用,将函数的类名、参数等信息写入syslog
- %orig该指令在%hook内部使用,执行被hook的函数的原始代码
1 | /* How to Hook with Logos |
control 文件记录了deb包所需的基本信息,会被打包进deb包里
1 | Package: cc.onezen.demo |
手动安装包
根据上面介绍的默认生成的Makefile,是手动安装deb包的配置。
修改Tweak里的代码
1 | %hook SpringBoard |
编译:make
打包:make package
拷贝到iPhone scp packages/cc.onezen.demo_0.0.1-1+debug_iphoneos-arm.deb root@192.168.2.24:/tmp
切换到iphone上安装: dpkg -i /tmp/cc.onezen.demo_0.0.1-1+debug_iphoneos-arm.deb
重启springboard killall -9 SpringBoard
。这时候会出现白苹果,几秒后会重新到桌面
点击home键,效果图
自动安装包
修改Makefile文件
1 | #debug=0是release包 |
编译make
安装make package install
输入两次密码后到桌面
1 | ➜ demo make package install |
deb包
删除原先的包 dpkg -r cc.onezen.demo
然后手动重启 killall -9 SpringBoard
查看包的结构:dpkg -c cc.onezen.demo_0.0.1-1+debug_iphoneos-arm.deb
1 | drwxr-xr-x wz/staff 0 2017-09-21 18:19 ./ |
dpkg 打包的时候会把theos根目录下的layout文件夹,映射到安装的设备的根目录下。
脚本文件
1 | preinst |
相关命令
查看签名信息和或者bundle id : codesign -dvvv WeChat
1 | Executable=/Users/leaf/yy/WeChat |