iOS逆向-THEOS

请注意,本文编写于 386 天前,最后修改于 191 天前,其中某些信息可能已经过时。

安装THEOS

安装theos之前需要先利用brew安装一下ldid。命令brew install ldid

为了使nic.pl命令能够在全局使用,在.bash_profile的中配置环境变量

export THEOS=~/theos
export PATH=$THEOS/bin:$PATH

clong theos

$ git clone --recursive https://github.com/theos/theos.git $THEOS

使用theos

在需要创建项目的目录下使用nic.pl命令。

nic.pl
nic.pl

选择13,创建iphone/tweak项目。根据提示填写项目信息。

  • Project Name (required):项目名称
  • Package Name [com.yourcompany.sochhh]:项目id
  • Author/Maintainer Name [SoC]: 开发者名字
  • [iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]:要tweak的项目id(项目的bundle id)

主要填写的以上几项 其他的一律回车跳过即可。创建完成之后的项目目录:

tweak dir
tweak dir

  • socTest.plist 中填写的就是要tweak的项目bundle id,创建项目的时候也可以跳过以后在这里填写。
  • makeFile 用于编译 打包 安装的命令工具 主要使用的命令有`make
    clean清理编译信息 make编译 make package 打包 make install`安装。
  • tweak.xm hook代码在这里编写。

使用nic.pl的时候,设置的环境变量不生效的可能原因以及解决办法

如果安装完成之后不能全局调用nic.pl,需要使用source .bash_profile或者重启terminal使环境变量生效。如果默认使用.bash终端,环境变量的优先级为/etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc如果使用了.zsh,你会发现在.bash_profile中配置的环境变量在下次重启终端的时候并不会起作用,因为.zsh不会执行.bash_profile,如果要使下次重启终端的时候这些环境变量生效则需要在.zshrc中重新配置,或者在启动.zshrc的时候调用一下source .bash_profile

.zsh使用.bash_profile中的环境变量
.zsh使用.bash_profile中的环境变量

开始tweak项目

配置makeFile文件

在makeFile中配置环境变量(ssh访问iPhone的方式)

  • THEOS_DEVICE_IP
  • THEOS_DEVICE_PORT
    如果不想每次都编写这两个环境变量也可以设置在.bash_profile中,但是需要保证这两个值不会经常变动,设置在.bash_profile中才有意义。

编写tweak.xm

hook代码编写在%hook%end中间。

tweak代码编写
tweak代码编写

%hook后面跟要hook的类名,中间是要hook的方法名。方法名可以通过class-dump获取的头文件中查找。

编写完成之后使用make命令编译成dylib动态库,make package命令将动态库和plist打包成一个deb格式的插件, make install命令通过ssh方式连接iPhone,借助Cydia软件安装到手机中。

手机中安装deb插件的目录为:

deb插件目录
deb插件目录

所以当我们需要卸载插件的时候直接在Cydia中卸载即可。

笔记来自 www.520it.com 小码哥iOS逆向

Comments

添加新评论