iOS逆向之旅(越狱篇) — Theos

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

iOS逆向之旅(越狱篇) — Theos_第1张图片

捣鼓一个插件

  • 第一步创建一个tweak项目

iOS逆向之旅(越狱篇) — Theos_第2张图片

注: [iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: com.tencent.xin 这里是填入的是,你最终想把代码注入到哪一个项目的BundleID

  • 修改新建项目下的Makefile,填上手机的IP地址和端口【这里用的是USB连接,不懂可以参考iOS逆向之旅(越狱篇) — SSH】
iOS逆向之旅(越狱篇) — Theos_第3张图片
  • 第三步直接 make package 编译成deb包

如果你使用的是Xcode10会出现以下问题


iOS逆向之旅(越狱篇) — Theos_第4张图片

原因是:Apple在Xcode10中彻底抛弃了GNU的C++标准库,实现libstdc++切换到LLVM的libc++上
解决办法是修改Makefile文件,如下:


iOS逆向之旅(越狱篇) — Theos_第5张图片
  • 编译结果如下
iOS逆向之旅(越狱篇) — Theos_第6张图片

iOS逆向之旅(越狱篇) — Theos_第7张图片
  • 最后通过make install 就可以把插件装到手机上了
    iOS逆向之旅(越狱篇) — Theos_第8张图片
  • 如果你还遇到其他坑,请看最后一个小标题

搞个小案例

  • 我再Tweak.xm下写了点hook代码,hook登录按钮【怎么分析哪个控制器,哪个方法我之前说过了,我现在就不赘述了】
iOS逆向之旅(越狱篇) — Theos_第9张图片

iOS逆向之旅(越狱篇) — Theos_第10张图片
  • 结果:每次点击按钮的时候,就会打印222
iOS逆向之旅(越狱篇) — Theos_第11张图片
  • 盗号的原理也就是获取密码输入框的文本,然后调用通过http请求把你的账户密码给暴露出去

编译过程出现的各种坑,我这里小小的总结一下

  • 不要在中文目录下编译工程.否则报错
  • packageName(包名称),全部小写!!!
  • Error: IO::Compress::lzma 没有lzma这个压缩软件,需要下载lzma(或者修改配置使用gzip)
  • Error: You do Not an SDK: 需要指定Xcode ,需要安装一下MonkeyDev

你可能感兴趣的:(iOS逆向之旅(越狱篇) — Theos)