iOS逆向系列-theos
2018-04-26 17:54 iCoderHong 阅读(634) 评论(0) 编辑 收藏 举报概述
theos是GitHub开源的一个项目,通过nic.pl
创建tweak
项目。通过编写我们注入代码,然后执行编译、打包、安装等操作将代码注入iPhone安装的制定程序。
theos环境配置
安装签名工具ldid
- 确保安装了brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 利用brew安装ldid
$ brew install ldid
下载theos
$ git clone --recursive https://github.com/theos/theos.git
由于theos依赖于其它的库所以我们使用recursive
递归方式去clone自动下载锁依赖的库。我这里下载了~/目录下。
配置环境变量
为了是theos/bin目录下的命令全局有效,配置环境变量。
theos
theos创建工程
- cd到一个存放项目代码的文件夹(比如桌面)
$ cd ~/Desktop
$ nic.pl
-
选择【11.】iphone/tweak
-
填写项目信息
- 项目名称
- 项目ID(随便写)
- Author/Maintainer Name
- 作者
- 直接敲回车按照默认的做法就行(默认是Mac上的用户名)
- [iphone/tweak]MobileSubstrate Bundle filter
需要修改的App的Bundle Identifier(需要hook程序的Bundle Id)
可以通过Cycript查看App的Bundle Identifier
-
[iPhone/tweak] List of applications to terminate upon installation
- 直接敲回车按照默认做法就行
编写Makefile
- 在前面加入环境变量,写清楚通过那个IP和端口访问手机
编写代码
- 打开Tweak.xm文件
编译-打包-安装
- 编译
make
- 打包成deb
make package
- 安装 (默认会重启SpringBoard)
make install
遇到问题解决
make package的错误
$ make package
Can't locate IO/Compress/Lzma.pm in @INC (you may need to install the
IO::Compress::Lzma module) (@INC contains: /Library/Perl/5.18/darwin-
thread-multi-2level /Library/Perl/5.18 /Network/Library/Perl/5.18/darwin-
thread-multi-2level /Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.2
/System/Library/Perl/5.18/darwin-thread-multi-2level
/System/Library/Perl/5.18 /System/Library/Perl/Extras/5.18/darwin-thread-
multi-2level /System/Library/Perl/Extras/5.18 .) at
/Users/mj/theos/bin/dm.pl line 12.
BEGIN failed--compilation aborted at /Users/mj/theos/bin/dm.pl line 12.
make: *** [internal-package] Error 2
是因为打包压缩方式有问题,改成gzip压缩就行。修改dm.pl文件,用#注释掉下面两句
$ vim $THEOS/vendor/dm.pl/dm.pl
#use IO::Compress::Lzma;
#use IO::Compress::Xz;
修改deb.mk文件第6行的压缩方式为gzip
$ vim $THEOS/makefiles/package/deb.mk
_THEOS_PLATFORM_DPKG_DEB_COMPRESSION ?= gzip
make的错误
错误一
$ make
Error: You do not have an SDK in
/Library/Developer/CommandLineTools/Platforms/iPhoneOS.platform/Developer/S
DKs
是因为安装多个Xcode导致路径问题,需要指定一下Xcode
$ sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/
错误二
> Making all for tweak xxx...
make[2]: Nothing to be done for `internal-library-compile'.
是因为之前已经编译过,有缓存导致的,clean一下即可
$ make clean
$make
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 2025成都.NET开发者Connect圆满结束
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络