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

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

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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

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

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

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

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

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


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