iOS逆向之hook日志查看

原创
2019/11/25 00:00
阅读数 191

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 #查看是否已经安装

    已经安装时,则如下图所示,在安装包旁边会有一个绿色小钩



  3. 未安装gnutls时,则通过以下命令安装gnutls及libgcrypt

    brew install gnutls

    brew install libgcrypt


  4. 安装完以后,进入libimobiledevice工程目录中,使用以下命令编译工程

    ./autogen.sh --disable-openssl

    make && make install


  5. 编译成功后,将iPhone手机连接到mac后,在终端中使用以下命令查看libimobiledevice是否安装成功


    idevicesyslog #如果执行该命令后,开始打印日志则说明安装成功

  6. 通过grep过滤关键词,即可查看到我们hook后打印出的日志,如下图所示

    idevicesyslog | grep "SpringBoard is hooked"


附上log输出格式


本文分享自微信公众号 - 网络安全技术点滴分享(gh_c85d6ae14603)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部