MAC使用IDA PRO远程调试LINUX程序
1 背景
在学习Linux系统上的一些漏洞知识的时候,往往需要进行“实地测试”,但是在Linux系统上进行调试并不太方便,因为LINUX自带的GDB调试工具真的不太人性化,即使有GDBTUI之类的“伪图形界面调试器”,也跟IDA PRO之类的调试器相差甚远。这里又遇到另一个问题了——LINUX平台的IDA PRO不太好找。
综上,对于初学者而言最佳方案就是使用IDA PRO的远程调试功能!
2 环境配置
本文主要说明在MAC系统上如何通过IDA PRO对linux程序进行远程调试(如果宿主机为WINDOWS系统的话,原理类似)。
2.1 远程Linux端环境配置
首先,需要将IDA PRO中自带的用于远程调试的程序拷贝到LINUX机器中,这个程序就是linux_server或者linux_serverx64,前者用于调试32位程序,后者用于64位程序,且后者并不能兼容前者,因此在调试的时候需要注意了。后文以调试32位程序为例。
笔者的远程Linux系统为Ubuntu14.04,这是一个64位系统,因此默认情况下无法运行32位的linux_server程序,主要报错为缺少 libstdc++.so.6系统库,解决办法很简单:
sudo apt-get install lib32stdc++6
然后再运行linux_server就没问题了,成功运行效果如下:
chouchou:~$ ./linux_server
IDA Linux 32-bit remote debug server(ST) v1.20. Hex-Rays (c) 2004-2015
Listening on port #23946...
至此,Linux端的环境配置就完成了,是不是很简单^_^ ?
2.2 宿主MAC端环境配置
1. 首先,需要将等待调试的Linux应用程序拷贝到MAC端,以调试overFlow程序为例,将该程序拷贝到MAC目录中,笔者为~/Documents/vmWare/share/overFlow .
2. 然后,使用IDA打开该程序,注意因为是32bit程序,所以我们也需要选择32bit的IDA,通常命名为idaq.(64bit IDA通常命名为idaq64)
3. 在IDA的菜单选择Debugger->Select debugger,然后选择Remote Linux debugger,如下图所示:

4. 再次点击Debugger菜单,选择Process options,然后参照下图进行设置:

至此,MAC端的环境配置完毕。
3 开始调试
首先,我们在IDA中的main函数中下断点,如下图所示:

然后在Debugger中选择Start process,在弹出的窗口中根据提示信息选择yes和cancle即可,最终得到如下图所示的调试界面:

大功告成!开始愉快的享受IDA带来的非一般的调试体验吧!
MAC使用IDA PRO远程调试LINUX程序的更多相关文章
- Visual Studio 2015中使用gdb远程调试linux程序
VS的debug功能非常强大,相比而言linux上的图形化调试一直不是很好用. 如果可以使用VS来调试linux程序,应该是一件比较愉快的事情. 这在2015中变得可能,因为从2015开始VS支持An ...
- eclipse/idea远程调试Linux程序
第一步.在Tomcat的bin目录下的startup.sh文件的倒数第二行增加“JPDA_ADDRESS=8787”,最后一行在start的前边增加“jpda”,之后重启Tomcat 第二步.配置Ec ...
- visual studio 在windows远程调试 linux 程序 cout 输出乱码
转载:https://www.cnblogs.com/findumars/p/6627255.html 反正是解决了. 以gcc为例,它有三个命令选项:-finput-charset=gb18030- ...
- java远程调试(断点)程序/tomcat( eclipse远程调试Tomcat方法)
tomcat远程调试: 1.Linux中配置tomcat在catalina.sh中添加如下CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_soc ...
- 使用VS+VisualGDB编译调试Linux程序
Linux程序开发变得越来越多,越来越多的程序.产品需要跨平台,甚至有些开源项目只支持Linux平台,所以掌握Linux开发变得越来越重要. 但是对于习惯了Windows下的开发,使用了VS这个宇宙第 ...
- ida GDB 远程调试
在看雪上回答的问题,有人问在WinDbg下断KiDebugRoutine或者KdEnterDebugger函数会引发蓝屏!因为是在调试Windows的内核调试引擎,我给出的解决办法是用不依赖Windo ...
- NetBeans远程调试Linux c++ 11项目
NetBeans远程调试Linux c++ 11项目 由于好多原因,好久没有写博客了,随着c++ 11的普及率越来越高,开发c++ 项目的人也越来越多,可以说c++ 11 给了c++ 这门语言第二次生 ...
- MAC 下用 Common Lisp 调试 OpenGL 程序
MAC 下用 Common Lisp 调试 OpenGL 程序 环境搭建 运行环境: OSX 10.11.3 EI Capitan Common Lisp: SBCL 使用 SBCL, 首先要安装这几 ...
- 在windows通过visual studio远程调试linux mono程序
本文参考文章 https://github.com/techl/MonoRemoteDebugger 1.通过连接https://github.com/techl/MonoRemoteDebugger ...
随机推荐
- MySQL中使用group_concat()函数数据被截取(有默认长度限制),谨慎!
最近在工作中遇到一个问题: 我们系统的一些逻辑处理是用存储过程实现的,但是有一天客服反馈说订单下单失败,查了下单牵扯到的产品基础资源,没有问题. 下单的存储过程中有这样两句代码: ; ; ; 执行存储 ...
- scrapy--dbmeinv
第一次将自己的爬虫文件与大家分享.豆瓣美女网页图片爬取.比较简单,但很实用.给大家提供思路为主,增强个人的爬虫能力.希望能帮助到大家!!! 好了,让我们进入正题. 先给大家看下成果!!!激励大家赶快行 ...
- 转-Spark编程指南
Spark 编程指南 概述 Spark 依赖 初始化 Spark 使用 Shell 弹性分布式数据集 (RDDs) 并行集合 外部 Datasets(数据集) RDD 操作 基础 传递 Functio ...
- [Codeforces976E]Well played!(贪心)
[不稳定的传送门] Solution 首先可以证明,hp翻倍的操作一定是在同一个生物上最优 Code #include <cstdio> #include <algorithm> ...
- [Uva11178]Morley's Theorem(计算几何)
Description 题目链接 Solution 计算几何入门题 只要求出三角形DEF的一个点就能推出其他两个点 把一条边往内旋转a/3度得到一条射线,再做一条交点就是了 Code #include ...
- Spring使用mutipartFile上传文件报错【Failed to instantiate [org.springframework.web.multipart.MultipartFile]】
报错场景: 使用SSM框架实现文件上传时报“Failed to instantiate [org.springframework.web.multipart.MultipartFile]”错,控制器源 ...
- Evevt Loop、任务队列、定时器等
上周五,一个朋友发给我一道面试题,代码如下: console.log(1); setTimeout(console.log(2), 0); Promise.resolve().then(res =&g ...
- Highest Tower 18中南多校第一场H题
一.题意 给出N个方块,要求给出一个方案,使得1. 所有方块都被使用到(题目数据保证这点) 2.所有方块垒成一个塔,且上面的方块宽度小于下面的方块 3.每个方块只能用一次,可以横着或者竖着. n范围5 ...
- 13,发布CRM
发布CRM你将使用以下软件 nginx uWSGI CentOS7 CRM项目文件 virtualenv supervisor WSGI.uWSGI python web服务器开发使用WSGI协议(W ...
- 4 Vue.js 核心理念:数据驱动界面
1 style样式放在body里面 <style type="text/css"> .ui.segment.container { width:700px; } p { ...