在早期的IDA中包含了一个iphoneserver的程序,这个程序就是配合IDA实现远程调试的。但是在最新版的IDA中这个东西已经不复存在了,因而下载的破解版的IDA中没有那个文件并不是被删除掉了,而是本来就没有,*^_^*。所以一直以来调试iPhone上的二进制程序只能悲催的使用ssh+gdb进行调试,虽然调试器的功能还算可以,但是每次调试都需要设置显示,只能使用命令进行控制,因而用起来还是不是十分爽。
其实网上关于IDA实现ios设备远程调试的文章从网上也是可以找到的,但是说的都不是十分具体。本文主要是介绍下IDA实现远程iPhone程序调试的方法,当然这样调试还存在一些问题,如果大家有什么好的解决方案还请不吝赐教。
需要注意的是要想调试ios设备上的程序并不是简单的吧gdbserver拷贝到ios设备上行就可以了,此时如果使用gdbserver启动进程将得到类似如图1所示的提示信息:
 
图1
提示文件没有找到,但是如果设备曾经链接过xcode进行过程序调试则不会出现下面的情况。这是因为xcode在进行程序调试的时候会将所需要的文件拷贝到Develop目录下,这样的话不论gdbserver在哪个目录下程序都是可以正常执行的。同样在上面的命令中看到的debugserver是苹果自己编译的一个gdbserver调试服务器,而实际使用则基本是没有任何的差异和影响的。
首先来配置下设备上的调试环境,从xcode的/Developer/Platforms/iPhoneOS.platform/DeviceSupport/3.2目录下找到DeveloperDiskImage.dmg文件,而3.2则是对应的ios设备上的系统版本,在DeviceSupport目录下通常会包含如如2所示的版本列表:
 
图02
在实际的调试过程中只需要选择相应的版本就可以了。在每个目录下都存在一个DeveloperDiskImage.dmg文件,用ultraiso打开这个文件可以看到如图3的文件目录列表:
 
图3
在调试的过程中需要将整个dmg文件下的所有目录和文件拷贝到设备上的/Developer目录下,如图4所示。这一步可以使用ios的文件管理工具,或者使用winscp上传文件,不建议使用后者,太卡了~,如果使用过xcode开发调试过程序那么这个目录下的所有东西应该都是存在的,可以无需手工复制。
 
图4
另外还需要在设备上安装ssh服务端,这个直接从cydia源中安装即可。最后就是程序的调试了。
在这里的调试可以使用预先分析文件和直接attach的方式进行调试。直接attach的方式比较简单一些,使用ssh客户端连接到设备(需要无线网络支持,如果木有,那我也冇办法哦~),在win下可以使用putty。
登录后默认会在root目录下,如图5所示。
 
切换到/Develop/usr/bin/目录下,给debugserver增加执行权限,如图6所示。
 
图6
现在就可以执行一个程序了,以AppleAssistantHD为例,执行./debugserver port:2008 /var/mobile/Applications/ABDEE3BA-02BE-4251-A57B-ECC363813133/AppleAssistantHD.app/AppleAssistantHD,此时debugserver会执行目标程序并且同时打开一个端口监听远程连接,如图7所示
 
图7
现在就可以运行ida链接远程调试器了。执行ida直接点go进入到程序界面即可,如图8所示。
 
图8
进入之后点击菜单的Debugger->Attach->Remote GdbDebuger,如图9所示
 
执行之后将会打开如图10所示的调试器附加窗口。
 
图10
在Hostname中输入设备的ip,port中输入debugserver的监听端口。点击Debug options打开调试选项,如图11所示。
 
图11
执行Edit exceptions打开异常处理选项窗口,如图12所示。
 
图12
编辑11号异常,去掉stop program的勾,如图13,否则在调试的过程中会非常的痛苦。
 
图13
关闭所有的设置窗口,现在就可以进行附加了,点击ok之后将会弹出如图14所示的进程列表。
 
图14
选择进程id为0的进程进行附加,如果成功将会弹出如图15所示的窗口。
 
图15
现在就可以进行调试了,如图16所示。
 
图16
上面的是直接attach的方法,这种方法能看到的只有内存数据,所以在实际的调试中并不是最好的方法。另外一种方式是直接用ida载入文件之后采用链接远程调试器的方式。首先将调试器设置为Remote gdb debuger然后编辑ida的Debug application setup:gdb设置,如图17所示:
 
图17
在application和input file中输入设备上的文件的绝对路径,其余的设置与attach的方式是完全一致的。设置完成之后就可以启动调试器了,此时会提示已经有远程进程在被调试,是否附加到,如图18.
 
图18
点击yes之后就可以进行调试了,如果附加成功将会弹出提示信息。这样调试的时候代码看起来还是比较清晰的,如图19
 
图19
虽然现在可以调试了,但是还有几个问题。也是我现在没有处理掉的:
1.  在静态分析的时候设置的断点会变为无效,如图20所示;
 
图20
2.  一旦将进程挂起之后重启启动进程已经卡死了,没有任何的响应。
由于上面的两个问题导致现在ida虽然可以附加到进程或者启动独立的进程进行调试,但是实际的效果并不理想。明显是一锤子买卖,一旦暂停就完全死翘翘了,这也就是在文章开始处提到的那个问题。

IDA + GDBServer实现iPhone程序远程调试 (手机远程)相关推荐

  1. [转]IDA + GDBServer实现iPhone程序远程调试

    源地址:http://bbs.pediy.com/showthread.php?t=138472 IDA + GDBServer实现iPhone程序远程调试 By:obaby 在早期的IDA中包含了一 ...

  2. IDA + GDBServer实现iPhone程序远程调试

    在早期的IDA中包含了一个iphoneserver的程序,这个程序就是配合IDA实现远程调试的.但是在最新版的IDA中这个东西已经不复存在了,因而下载的破解版的IDA中没有那个文件并不是被删除掉了,而 ...

  3. 西门子plc怎样实现远程调试、远程上下载程序?

    随着物联网的快速发展,西门子PLC广泛应于工业控制领域,是一款性能高.稳定性强的PLC设备,plc实现远程控制已经成为工业上一种新应用.通过手机微信小程序或PC终端对西门子PLC的运行进行远程预警监控 ...

  4. PC端chrome浏览器如何调试多点触控事件/chrome浏览器远程调试手机上的网页

    PC端chrome浏览器如何调试多点触控事件/chrome浏览器远程调试手机上的网页 最近学习移动端网页开发的时候,遇到了一个问题,如何在真机上看到控制台输出的内容. 虽然现在的桌面浏览器提供了模拟手 ...

  5. 手机远程管理服务器软件,远程控制软件 手机远程管理服务器

    [天极网IT新闻频道]站长们.网管还有一些技术管理人员,一旦出差或者一些紧急事故处理时,如果没有宽带和电脑处理网站或服务器出现的问题就比较棘手.不过,3G时代的到来,不用带上那笨重的本本也能管理服务器 ...

  6. chrome android 远程调试,chrome 远程调试

    方式一: 远程调式手机的chrome浏览器 Chrome DevTools调试移动设备Brower Page Tabs/WebViews 安卓远程调试目前支持所有操作系统(Windows,Mac, L ...

  7. FX5U远程调试PLC远程监控方案

    FX5U远程调试监控方案 长沙某公司因近期几套设备(控制器为三菱FX5U)需要出到其他省份及国外,售后部门人员安排紧张,不能协调前往调试,需寻找可对设备进行远程调试及监控的产品方便售后在任何有网络地方 ...

  8. eclipse 远程调试java_Eclipse远程调试Java代码的三种方法

    Eclipse远程调试Java代码的三种方法, 第1种方法是用来调试已经启动的Java程序,Eclipse可以随时连接到远程Java程序进行调试, 第2种方法可以调试Java程序启动过程,但是Ecli ...

  9. vscode python 远程调试_vscode 远程调试python的方法

    vscode 远程调试python的方法 发布时间:2019-10-14 15:32 来源:互联网 当前栏目:web技术类 本文介绍了vscode 远程调试python的方法,分享给大家,具有如下: ...

最新文章

  1. 光伏组件清洗的7大注意事项
  2. SQL 语句使用to_char函数时,检索结果有空格
  3. windows 编程 —— 消息与参数(定时器、初始化消息、改变大小)
  4. 类加载器源码、双亲委派、自定义类加载器详解
  5. 前端学习(359):svn服务器配置金和客户端安装
  6. QT安装和Hello,world
  7. 添加附件列表的方法 (数组或)arraylist为datalist的datasource时 datalist中的绑定方式
  8. ndarry转置二阶及以上的矩阵
  9. .net api reference中文_在macOS上使用.NET SDK编译 .NET 通用中间语言
  10. php反射API 获取属性/注释/方法 执行方法 实例
  11. STAR:转录组数据比对工具简介
  12. inflate方法的用法
  13. 第二届春回燕归 浙籍精英峰会见闻
  14. Java poi XWPFDocument 操作2007Word,实现参数替换、新增 插入 替换 表格数据、创建饼状图、柱形图、折线图
  15. 电气成套设备远程监控应用
  16. 我的linux学习笔记
  17. 白银价格转换器(美元/盎司-人民币/克)
  18. 2021 ICPC 沈阳赛区J题 Luggage Lock
  19. IDEA 搭建黑马品优购商城
  20. 中国录音制品出版情况分析:2020年中国共出版录音制品5312种,出版数量共计12194.67万盒(张)[图]

热门文章

  1. poj2942点双连通奇圈-二分图判断Knights of the Round Table
  2. matlab扩展的欧几里得算法_最大公约数问题(欧几里得算法)
  3. ROS TF 常用接口函数
  4. 【笔记】效率脑科学:卓有成效地完成每一项工作
  5. Java题-一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
  6. 区块链游戏的 1.0 2.0 3.0 4.0 时代
  7. 考取叉车证在线模拟考试题库以及2019最新操作叉车工笔试题
  8. 在OpenCV里实现游戏外挂的位置识别
  9. 更改高通平台开机logo和开机动画以及fastboot界面显示
  10. 一次公司培训后的学习心得