首页
社区
课程
招聘
[原创]调试器断下时,我发现一个有歧义的说法
2024-2-26 07:31 2761

[原创]调试器断下时,我发现一个有歧义的说法

2024-2-26 07:31
2761

一直以来,关于编写调试器的教程都说“当断下时,应当立即调用suspendthread暂停线程,然后再取寄存器的值,否则线程会继续运行,取到的寄存器值就不是断下时的值了”。

那么问题来了,调用suspendthread这个函数难道不需要更长时间?等它暂停线程已经过了万分之一秒的时间,这个时间线程早已经继续执行几百条指令了,取到的寄存器值岂不照样不是断下时的值?那还不如直接取寄存器的值,比执行suspendthread时间更短呢?到底断下时,线程是否还是在运行的?如果是,调用suspendthread暂停难道不晚了?

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞1
打赏
分享
最新回复 (11)
雪    币: 819
活跃值: (3469)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
逆向爱好者 2024-2-26 12:16
2
0
断下时,线程没有运行?
雪    币: 1792
活跃值: (5199)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
PEDIY 2024-2-26 14:05
3
1
逆向爱好者 断下时,线程没有运行?

断下后

最后于 2024-2-26 14:07 被PEDIY编辑 ,原因:
雪    币: 1792
活跃值: (5199)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
PEDIY 2024-2-26 14:06
4
0
逆向爱好者 断下时,线程没有运行?
最后于 2024-2-26 14:07 被PEDIY编辑 ,原因:
雪    币: 4427
活跃值: (3449)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
木志本柯 2024-2-26 14:11
5
0
断点是一种异常机制,触发异常后 操作系统需要处理这个指令异常 在没得到处理之前是不会让这个指令往后继续执行的。
雪    币: 1792
活跃值: (5199)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
PEDIY 2024-2-26 17:18
6
1
木志本柯 断点是一种异常机制,触发异常后 操作系统需要处理这个指令异常 在没得到处理之前是不会让这个指令往后继续执行的。

那么那些教程上的“当断下时,应当立即调用suspendthread暂停线程,然后再取寄存器的值,否则线程会继续运行,取到的寄存器值就不是断下时的值了”是错误的了?其实不会继续执行?

雪    币: 3
活跃值: (466)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
拉闸太子 2024-2-26 18:00
7
0
挂起是挂起   断下是断下  
雪    币: 819
活跃值: (3469)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
逆向爱好者 2024-2-26 18:11
8
0
PEDIY 逆向爱好者 断下时,线程没有运行? 断下后
我多打了一个问号,就是断下的时候没有运行
雪    币: 819
活跃值: (3469)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
逆向爱好者 2024-2-26 18:14
9
1
PEDIY 那么那些教程上的“当断下时,应当立即调用suspendthread暂停线程,然后再取寄存器的值,否则线程会继续运行,取到的寄存器值就不是断下时的值了”是错误的了?其实不会继续执行?
教程错了
雪    币: 819
活跃值: (3469)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
逆向爱好者 2024-2-26 18:15
10
0
拉闸太子 挂起是挂起 断下是断下
你说的应该是这条线程被断下,这个线程所属其他线程的处理办法就是suspendthread,暂停掉,等异常处理完毕全部恢复执行
雪    币: 80
活跃值: (922)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
暴强 2024-3-13 17:58
11
0
断下后,cpu不执行指令,触发暂停;
雪    币: 12
活跃值: (209)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
clestor 2024-3-18 21:27
12
0
断下后windows调试体系会自动给你把整个进程suspend 不需要再有什么额外操作了。
游客
登录 | 注册 方可回帖
返回