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程序的更多相关文章

  1. Visual Studio 2015中使用gdb远程调试linux程序

    VS的debug功能非常强大,相比而言linux上的图形化调试一直不是很好用. 如果可以使用VS来调试linux程序,应该是一件比较愉快的事情. 这在2015中变得可能,因为从2015开始VS支持An ...

  2. eclipse/idea远程调试Linux程序

    第一步.在Tomcat的bin目录下的startup.sh文件的倒数第二行增加“JPDA_ADDRESS=8787”,最后一行在start的前边增加“jpda”,之后重启Tomcat 第二步.配置Ec ...

  3. visual studio 在windows远程调试 linux 程序 cout 输出乱码

    转载:https://www.cnblogs.com/findumars/p/6627255.html 反正是解决了. 以gcc为例,它有三个命令选项:-finput-charset=gb18030- ...

  4. java远程调试(断点)程序/tomcat( eclipse远程调试Tomcat方法)

    tomcat远程调试: 1.Linux中配置tomcat在catalina.sh中添加如下CATALINA_OPTS="-Xdebug  -Xrunjdwp:transport=dt_soc ...

  5. 使用VS+VisualGDB编译调试Linux程序

    Linux程序开发变得越来越多,越来越多的程序.产品需要跨平台,甚至有些开源项目只支持Linux平台,所以掌握Linux开发变得越来越重要. 但是对于习惯了Windows下的开发,使用了VS这个宇宙第 ...

  6. ida GDB 远程调试

    在看雪上回答的问题,有人问在WinDbg下断KiDebugRoutine或者KdEnterDebugger函数会引发蓝屏!因为是在调试Windows的内核调试引擎,我给出的解决办法是用不依赖Windo ...

  7. NetBeans远程调试Linux c++ 11项目

    NetBeans远程调试Linux c++ 11项目 由于好多原因,好久没有写博客了,随着c++ 11的普及率越来越高,开发c++ 项目的人也越来越多,可以说c++ 11 给了c++ 这门语言第二次生 ...

  8. MAC 下用 Common Lisp 调试 OpenGL 程序

    MAC 下用 Common Lisp 调试 OpenGL 程序 环境搭建 运行环境: OSX 10.11.3 EI Capitan Common Lisp: SBCL 使用 SBCL, 首先要安装这几 ...

  9. 在windows通过visual studio远程调试linux mono程序

    本文参考文章 https://github.com/techl/MonoRemoteDebugger 1.通过连接https://github.com/techl/MonoRemoteDebugger ...

随机推荐

  1. jquery 改变标签可见状态的几种方式

    第一种: $(selector).show(); //立即显示指定标签 $(selector).hide();//立即隐藏指定标签 第二种: $(selector).fadeIn(ms);//在指定毫 ...

  2. JS下载文件常用的方式

    下载附件(image,doc,docx, excel,zip,pdf),应该是实际工作中经常遇到一个问题:这里使用过几种方式分享出来仅供参考; 初次写可能存在问题,有问题望指出 ​ 主要了解的几个知识 ...

  3. composer安装教程(Linux版)

    composer 是款不错的工具,那么如何进行安装composer呢 如果您是linux系统或是mac系统 请先确定是否安装了curl linux安装curl   1 yum install -y c ...

  4. Pandas 数据读取

    1.读取table # 读取普通分隔数据:read_table # 可以读取txt,csv import os os.chdir('F:/') #首先设置一下读取的路径 data1 = pd.read ...

  5. 笔记-python-lib-requests常用类/方法/属性

    笔记-python-lib-requests常用类/方法/属性 1.      requests模块常用类/方法/属性 在使用中发现对requests模块不够熟悉,写了几个案例后重新整理了一下文档,罗 ...

  6. java实时监听日志写入kafka(多目录)

    目的 实时监听多个目录下的日志文件,如有新文件切换到新文件,并同步写入kafka,同时记录日志文件的行位置,以应对进程异常退出,能从上次的文件位置开始读取(考虑到效率,这里是每100条记一次,可调整) ...

  7. 从Wireshark看TCP连接的建立与关闭

    TCP是一种面向连接.可靠的协议.TCP连接的建立与断开,都是需要经过通信双方的协商.用一句话概括就是:三次握手say hello(建立连接):四次握手say goodbye(断开连接).要了解TCP ...

  8. SharpCompress的压缩文件解压和文件夹压缩

    1.前言 最近做一个功能需要用到对压缩文件的解压,就找到了这个SharpCompress不错,还能解压rar的文件.但是网上的资料和我拿到的SharpCompress.dll的方法有些出入,所以我就自 ...

  9. 1079: [SCOI2008]着色方案

    链接 思路 首先是dp,如果直接用每个种颜色的剩余个数做状态的话,复杂度为5^15. 由于c<=5,所以用剩余数量的颜色的种类数做状态:f[a][b][c][d][e][last]表示剩余数量为 ...

  10. 原子操作和volatile关键字

    原子操作:不可被中断的操作.要么全执行,要么全不执行. 现代CPU读取内存,通过读取缓存再写入主存.先去主存读--->写入缓存---->运行线程--->写入缓存---->写入主 ...