iOS逆向之hook日志查看

2022-05-19 13:57:24 浏览数 (1)

iOS逆向时,我们通常会借助hook的方法来查看某个阶段函数参数或类成员变量的值,从而帮助我们确定关键call及算法还原时验证是否正确。

我们使用hook时,会将要查看的寄存器的值保存到文本、弹窗显示或者打印log输出到终端及重定向到文本中。

这里将介绍当通过打印log获取函数参数值时,如果在终端查看log。

iOS版本 < 10时

在越狱的iPhone手机中,可以直接在cydia中搜索Syslogd to /var/log/syslog 并安装,如果没有找到Syslogd to /var/log/syslog时,则先在源中添加 http://apt.saurik.com 源后,再尝试搜索试试。

安装完Syslogd to /var/log/syslog 后,当我们再hook iOS应用函数时,则可以在/var/log/syslog中查看我们打印出的日志消息,或者也可以通过Xcode -> Window -> Devices and Simulators -> View Devices Logs 查看对应设备的日志,在搜索框中通过关键词过滤出相应日志。

iOS版本 >= 10时

当iOS版本大于等于10时,则我们hook函数后打印日志无法通过syslog再进行查看,因此需要通过其他方式查看我们打印出的日志。

使用libimobiledevice程序进行查看,在使用之前需要先下载安装libimobiledevice到mac中。

  1. 下载libimobiledevice git clone https://github.com/libimobiledevice/libimobiledevice.git
  2. 下载完以后,准备编译libimobiledevice,在开始编译之前使用以下命令先查看requirements中的gnutls是否已经安装,如果未安装,则先安装,否则编译会报错。 brew search gnutls #查看是否已经安装 已经安装时,则如下图所示,在安装包旁边会有一个绿色小钩
  1. 未安装gnutls时,则通过以下命令安装gnutls及libgcrypt brew install gnutls brew install libgcrypt
  2. 安装完以后,进入libimobiledevice工程目录中,使用以下命令编译工程 ./autogen.sh --disable-openssl make && make install
  3. 编译成功后,将iPhone手机连接到mac后,在终端中使用以下命令查看libimobiledevice是否安装成功 idevicesyslog #如果执行该命令后,开始打印日志则说明安装成功
  4. 通过grep过滤关键词,即可查看到我们hook后打印出的日志,如下图所示 idevicesyslog | grep "SpringBoard is hooked"

附上log输出格式

0 人点赞