首页
社区
课程
招聘
[翻译]Writing a basic Windows debugger--编写简单的Windows调试器
发表于: 2011-2-25 13:58 15394

[翻译]Writing a basic Windows debugger--编写简单的Windows调试器

2011-2-25 13:58
15394

codeproject上的文章 写的很好 看完基本对调试器的原理有一定认识了
原文地址:http://www.codeproject.com/KB/system/writing_debugger_1.aspx


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (10)
雪    币: 4902
活跃值: (130)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
翻译辛苦
表示感谢哈
2011-2-25 14:31
0
雪    币: 181
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
辛苦了~期待第二部分的翻译
2011-2-25 14:34
0
雪    币: 388
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
这个必须学习啊,谢谢楼主分享
2011-2-25 14:45
0
雪    币: 233
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
恩恩,写的不错,翻得精彩,LZ再接再厉哦
2011-2-25 15:11
0
雪    币: 596
活跃值: (449)
能力值: ( LV12,RANK:320 )
在线值:
发帖
回帖
粉丝
6
作者是时隔1年写的第二部分,文章很长会翻译的,毕竟我也想写个调试器玩玩嘿嘿
2011-2-26 17:49
0
雪    币: 1644
活跃值: (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
多谢分享,学习了。下面几点是以前所不知道或者不是很清楚的:

3. 仅能有一个调试器被attach到被调试程序上(即不能同时有多个调式器去调试同一个进程). 但是一个调试器进程可以调试多个进程(用不同的线程).

4. 只有创建被调试程序的线程才能调试目标进程.因此,CreateProcess和调试器循环必须在同一线程中.

5. 当调试器线程结束,被调试程序也要结束.但是调试器进程可能继续运行.

6. 当调试器的调试线程忙于处理一个调试事件,被调试程序(目标进程)的所有的线程会被挂起.


对于4,和5有些疑问:
4. 如果是attach的话不属于这种情况吧。
5. 没有不终止被调试进程而detach的方法么?
2011-4-5 00:26
0
雪    币: 596
活跃值: (449)
能力值: ( LV12,RANK:320 )
在线值:
发帖
回帖
粉丝
8
对于4:attach情况也属于.因为消息是基于线程的,如果DebugActiveProcess和调试循环不在同一线程中,发生调试事件时,那个线程就不能处理了,除非你在两个线程中都写上调试循环(不过这样有点舍本逐末了).
对于5:是有方法的.首先调试进程结束,被调试进程的结束默认是系统帮我们结束的.如果在低版本系统中,可以跟踪系统到底是怎么结束被调试进程,然后找到相关API打个补丁应该就可以,如果是高版本系统可以使用Windows提供的API DebugSetProcessKillOnExit来达到这个目的.
但是我个人觉得调试进程结束,被调试进程也结束是有益的.万一你用OD分析一个病毒,仅仅想得到病毒内一个加密字符串最后解密后的结果是怎样的,然后得到了,退出OD,病毒执行了,这时你总不能骂微软吧,哈哈,所以微软还是考虑很周全的.
2011-4-5 01:37
0
雪    币: 220
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
恩  这个值得关注
2011-5-18 17:47
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
下载学习下。
2011-11-30 17:37
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习下
2011-12-7 14:19
0
游客
登录 | 注册 方可回帖
返回
//