For Fun:使用 IDA 调试 iOS 程序的步骤

前提要求

1、熟悉基本的 IDA 操作。

2、会对手机进行越狱。

3、从手机上拷贝文件到电脑,从电脑上拷贝文件到手机。

4、会使用 ldid 对 debugserver 签名,增加权限。

5、会使用工具(如:iproxy)映射手机端口。

6、了解如何使用 LLDB 调试应用,可以参考我 15 年写的文章:《在非越狱设备上使用LLDB 调试第三方 App》。

实验环境

64 位 iOS

映射端口

iproxy 11022 11022 DEVICE_UUID

 

附加、调试 iOS App

1、将 /Applications/Calculator.app/Calculator拷贝到电脑上。

2、使用 IDA 64 加载Calculator。

3、在手机上启动 Calculator。

4、找到 Calculator 的 PID:

 

ps aux |grep Calculator

假设 PID 为:692

5、确定 Calculator 的加载基址:

 

vmmap 692

 

如上图加载基址为:0x1000b0000

6、在 IDA 中将 Calculator 的基址改为:0x1000b0000

 

7、在手机上配置debugserver:

 

debugserver *:11022 --attach=692

 

 

执行结果如下图:

 

8、回到 IDA 中选择 Debugger:Remote GDBdebugger

  ---> 

9、启动调试器:

10、配置调试器:

点击 OK。

点击 YES。

11、打开反汇编窗口,在-[Calculator.AppDelegateapplicationDidEnterBackground:] 函数上设置断点:

12、按 F9 继续执行:

13、在手机按 Home 键,将应用切后台,断点命中:

如上是调试iOS 应用的流程,调试 iOS 系统服务的流程也一样。

总结

IDA 调试 iOS 程序的主要问题:没有办法自动处理 ASLR,造成整个调试过程很不顺畅,还不如在 LLDB 中调试。

解决方法:

1、自己为 IDA 写一个调试增强插件,自动计算 ASLR,自动 Rebase。

2、将目标 MachO 的 PIE 属性去掉,不过印象中内核中有检查,在新系统中不一定可以去掉。

  • 3
    点赞
  • 1
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值