IDA PRO 04 - 动态调试基础02

本文详细介绍了硬件断点在调试中的原理、设置方法,以及与软件断点的区别,特别关注了在处理加密壳代码时硬件断点的重要性。作者以Linux64位程序为例,展示了如何在IDA中使用硬件断点进行动态分析。

本文主要讨论硬件断点。

03查漏补缺

  • 进程控制里面的F7/F8描述写反了,F7是步入,F8是步过。

  • ​调试Android的so库时,由于我们使用了 tcp 转发,所以需要在启动设置里面设置主机为本机(127.0.0.1),如果不使用 tcp 转发,那么直接填手机的 ip 地址就行。

硬件断点

03中我们演示的例子,是使用的软件断点,这也是IDA默认的行为。

软件断点的原理是用一条软件断点指令替代断点地址所在位置的操作码字节。在 x86 中,软件断点的指令是 int 3 指令,操作码值是 0xCC。

正常情况下,执行软件断点指令的时候,操作系统会将控制权转移给监控被调试进程的调试器(比如 IDA 的)。利用这种方式,就可以做一些反调试的操作,比如有的程序会故意生成一些异常,这些异常会被调试器捕获到,所以就很烦。还有一个经典的反调试操作,就是自己fork一个子进程调试自己。这样IDA就无法调试该进程了,因为同一时刻,一个进程只能被一个进程附加(调试)。

一些CPU支持硬件辅助的断点,用来代替软件断点。硬件断点使用专用的寄存器配置。在x86中,这些寄存器叫 DR0-7。

硬件断点是有数量限制的,在x86中一般是4个,使用的时候需要注意一下,其他平台可以查一下文档。

设置硬件断点

硬件断点设置方法:先设置普通断点,编辑断点,选中 [hardware],并配置右下角选项,如图:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二手的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值