Theos
首先要感谢作者DHowett,还有后期维护的一大波高手
之前在iOS逆向之旅(进阶篇) — HOOK(Logos)的Logos就是Theos其中的一个组件。
theos主要是用来写越狱插件,之前我们注入代码都需要对ipa包,砸壳-注入代码-重签名-重装,现在有了插件我们就只不需要那么麻烦了,直接安装插件即可【前提在越狱环境下】。
Theos的安装
官方文档,我也是照着文档来,高手请忽略
- 安装包管理工具Homebrew
- 安装ldid【这个是类似codesign的签名工具】
- 配置环境变量 THEOS
echo "export THEOS=~/theos" >> ~/.profile
备注:~/theos 是安装路径,写到~/.profile后最好source一下,最好再echo $THEOS 一下看看配好了没。已经很啰嗦了,高手请忽略
- clone一下
git clone --recursive https://github.com/theos/theos.git $THEOS
必须Clone,别直接download,里面涉及不少依赖
- 最后把Theos的bin目录写到PATH里面,我们需要用里面的nic.pl
捣鼓一个插件
- 第一步创建一个tweak项目
注:[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: com.tencent.xin
这里是填入的是,你最终想把代码注入到哪一个项目的BundleID
- 修改新建项目下的Makefile,填上手机的IP地址和端口【这里用的是USB连接,不懂可以参考iOS逆向之旅(越狱篇) — SSH】
- 第三步直接 make package 编译成deb包
如果你使用的是Xcode10会出现以下问题
原因是:Apple在Xcode10中彻底抛弃了GNU的C++标准库,实现libstdc++切换到LLVM的libc++上
解决办法是修改Makefile文件,如下:
- 编译结果如下
- 最后通过
make install
就可以把插件装到手机上了
- 如果你还遇到其他坑,请看最后一个小标题
搞个小案例
- 我再Tweak.xm下写了点hook代码,hook登录按钮【怎么分析哪个控制器,哪个方法我之前说过了,我现在就不赘述了】
- 结果:每次点击按钮的时候,就会打印222
- 盗号的原理也就是获取密码输入框的文本,然后调用通过http请求把你的账户密码给暴露出去
编译过程出现的各种坑,我这里小小的总结一下
- 不要在中文目录下编译工程.否则报错
- packageName(包名称),全部小写!!!
- Error: IO::Compress::lzma 没有lzma这个压缩软件,需要下载lzma(或者修改配置使用gzip)
- Error: You do Not an SDK: 需要指定Xcode ,需要安装一下MonkeyDev