我的编程空间,编程开发者的网络收藏夹
学习永远不晚

ida使用技巧之动态调试

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

ida使用技巧之动态调试

一、ida动态调试

1、介绍

众所周知,ida是一款非常优秀的反编译软件,在静态逆向中是属于屠龙宝刀一般的存在,他不仅仅有着优秀的静态分析能力,同时还有着极其优秀的动态调试能力,甚至可以直接对生成的伪代码进行调试,这一点远超其他只能在汇编层进行调试的动态调试器,极大的增加了动态调试程序的可读性,能够节省很多精力。甚至可以以远程调试的方式,将程序部署在linux或安卓端上,实现elf文件和so文件等的动态调试。

2、本地调试(Windows)

首先从本地动态调试开始

加载目标文件

万年第一步,使用ida打开目标文件,然后点击菜单项中的“Debugger”
在这里插入图片描述
选择select debugger
在这里插入图片描述本地调试Windows文件,所以这里选择local Windows debugger。
在这里插入图片描述点击ok之后,再看debugger菜单发现此时菜单以新的形式展开

在这里插入图片描述此时再点击带有绿色三角符号的“Start process”即可开始调试程序

ida还支持另一种调试方式,即将目标文件附加到一个正在运行的进程上,以调试某些无法独立运行的文件,如果想以这种方式进行调试,则在选好调试器后点击“Attach to process”后即可选择附加进程
在这里插入图片描述

调试器界面

经过一段时间的加载之后,进入了调试器界面
在这里插入图片描述“IDA-view-eip”界面是反汇编窗口,在这里点击f5,可以进入伪代码调试
在这里插入图片描述

可以说是非常的好用
下面的“hex view”顾名思义,右边从上到下分别是级寄存器/标志寄存,加载到进程内存空间中的可执行文件和共享库,双击模块名称可打开该模块输出的符号表,再向下看就是栈窗口

调试命令

ida快捷键功能
F7单步步进
F8单步步过
F9继续运行程序
F4运行到光标所在行
Ctrl + F7直到该函数返回时才停止
Ctrl + F2终止一个正在运行的进程
F2设置断点

断点

ida的动态调试同样支持设置条件断点
在这里插入图片描述
设置好断点后,右键断点,点击第二行“Edit breakpoint”即可打开断点设置菜单
在这里插入图片描述
location栏是断点地址,condition栏则是条件断点的表达式
例:EAX == 12
指当EAX的值为12时中断,同时,因为condition栏由IDC表达式支持,所以可以使用一些IDC的函数。
比如:GetRegValue(“ZF”)
指当ZF的值不为0时中断

监视窗口

ida同样也支持对数据的监视,需要监视的数据一般在栈或者数据块中,进入栈或者数据,点击右键打开菜单,选择“Add watch”
在这里插入图片描述即可在窗口“watch list”中显示,如果需要删除,则按“Delete”键
在这里插入图片描述

3、远程调试

ida支持远程调试Windows、linux、Android、Mac OS的二进制文件,将文件放在远程的对应系统服务器上,ida远程连接服务器,在服务器上运行、调试程序,并在本地客户端显示调试界面。界面视图上和本地调试并没有区别。
如果需要远程调试,首先需要将ida的服务端部署在远程服务器上,ida的服务端存储在ida目录中的dbgsrv文件中
在这里插入图片描述将需要调试的文件和服务端版本放入服务器中,然后运行服务端,会默认在23946端口启动ida服务端程序,以linux为例
被调试程序是64位elf文件,所以在linux端运行linux_server64,然后回到客户端
在这里插入图片描述
客户端的第一步没什么变化,在菜单选择debugger栏,在选择debugger时,选择Remote Linux debugger
在这里插入图片描述然后在菜单中先选择“Process option”进行设置
在这里插入图片描述
打开后页面如下
在这里插入图片描述第一行application和input file选择被调试文件在服务端中的存储路径。下面第三行的directory是存储路径,直接选被调试文件所在目录就行。再下面第四行的是程序启动时传入的参数,可以为空。第五行则“Hostname”则填服务端的ip和端口号,我这里选的服务端是虚拟机。最后一行的password是linux_server启动时设置的密码,如果没有设置,则为空即可。全部设置正确之后就可以开始调试了
点击“start process”开始调试程序

在这里插入图片描述可以看到在服务端程序已经成功启动
在这里插入图片描述

接下来的步骤和本地调试并没有什么区别不再赘述。其他安卓和Mac的文件远程调试也是大同小异,也不再多说了。

来源地址:https://blog.csdn.net/m0_52164435/article/details/124871122

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

ida使用技巧之动态调试

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP 函数的动态调用技巧是什么?

php 动态调用函数是一种强大的特性,允许您根据变量值或输入动态调用函数。您可以使用 call_user_func() 函数,其中第一个参数是函数名称,后面是函数参数。动态调用函数可提高代码可重用性、灵活性并简化复杂逻辑。PHP 函数的动态
PHP 函数的动态调用技巧是什么?
2024-04-11

使用通用查询日志提高您的 MySQL 调试技巧

管理 mysql 数据库时,理解和解决问题通常需要详细查看系统中运行的查询。这就是 mysql 通用查询日志发挥作用的地方。它提供了所有客户端连接及其执行的查询的广泛记录,使其成为数据库管理员的重要工具。在本文中,我们将深入探讨 mysql
使用通用查询日志提高您的 MySQL 调试技巧
2024-10-18

Linux平台上使用Python进行脚本调试的技巧

Linux平台上使用Python进行脚本调试的技巧在Linux平台上使用Python进行脚本调试是开发过程中常见的任务之一。脚本调试可以帮助我们快速定位和修复代码中的错误,提高开发效率。本文将介绍一些在Linux平台上使用Python进行脚
2023-10-22

C++技术中的机器学习:使用C++实现机器学习算法的调试技巧

c++++ 中机器学习算法的调试技巧:使用断点和调试器进行精确错误识别และตรวจสอบสถานะของตัวแปร使用日志记录和跟踪记录关键变量和事件以了解算法行为利用 valgrind 和 gdb 等分析工具检测内存错误和获取程序状态
C++技术中的机器学习:使用C++实现机器学习算法的调试技巧
2024-05-11

JavaScript Try...Catch 语句与调试工具配合使用技巧:快速定位错误源头

本文将讨论如何使用 JavaScript 中的 try...catch 语句来捕获和处理错误,如何结合调试工具来快速定位错误源头,从而编写出更加健壮可靠的代码。
JavaScript Try...Catch 语句与调试工具配合使用技巧:快速定位错误源头
2024-02-08

编程热搜

目录