约有 1,303 项符合查询结果, 以下是第 112 - 131项。
费时 < 1 秒。
这里要区分CPU级的异常,还是软件层次的异常。CPU执行INT 2D时总是会产生异常(TRAP)。操作系统也总会收到和分发这个异常。按照异常分配的原则,有人处理了就不会继续分发,所以如果是内核调试例程声明处理了这个异常,那么用户态的代码就不会收到[软件]异常了。
有否调试器的差异就是调用KdpStub(没有调试器)还是KdpTrap(有调试器),分发异常时不需要做判断,因为调试器函数已经把函数指针(KiDebugRoutine)的指向设置好了。
Posted in Windows内核调试
by
格蠹老雷
on 2008-11-09
上次听你说武汉大学,以为是在学校工作,今天知道原来是大三的学生。按王宇给出链接,浏览了一下你的博客,再看看照片里你选择的这些书,后生可畏呀...... 本来以为武汉大学的文科很厉害,你的同学也都像你这样么?^_^ P4大全目前只有一本,从目前的“竞争形势”看,我该想办法再搞一本了......
Posted in 《软件调试》书友
by
格蠹老雷
on 2008-11-09
要把思路调整一下。假定要修补函数A,需要改变它的100个字节,那么不要想着就在原来的A上直接补。更可行的方法是把一个离线补好的A'复制到内存中。当A'准备好之后,好比修好了一条新的水渠,接下来的工作只是把水引过来。也就是把A的入口改一下,跳过来。跳过来之后,其实A和A'还是同时存在一段时间的。这样问题就简单很多。否则的话,就好像是没修好渠就把水引过来^_^。
Posted in Windows内核调试
by
格蠹老雷
on 2008-11-08
对的,对于第一个问题,如果本次DbgPrint调用没有满足过滤条件,那么就不会再去触发INT 2D(《软件调试》P499下数第三段)。你关于OutputDebugString的说法有不是很对,首先INT 2E和INT 2D是完全用作不同用途的,INT 2E是通用的系统调用机制。OutputDebugString的实现是调用RaiseException API,这个API会调用系统服务,但是它与INT 2D没有什么直接的关联。《软件调试》的10.7节(P259)详细介绍了OutputDebugString的工作过程。另外,OutputDebugString是没有什么过滤机制的,它总是调用RaiseException API,这是它的不足(参见P265)。 ...
Posted in Windows内核调试
by
格蠹老雷
on 2008-11-08
上一个帖子是有些关键点没能点明。王宇的Patch N字节是个大题目。实际操作中,一种可行的办法(Nt系统实用的)是把新的函数(A')复制到要修补模块的地址空间中,因为这时不会有人调用A',所以根本不用考虑多核和并发的问题。
接下来需要把原来函数(A)的入口点Patch进一条跳转指令。因为原函数是在使用的,可能有CPU正在执行或者即将执行它,所以这时就要格外注意并发和多核问题了。如何注意呢?干净利索的办法就是我说的四字节对齐方法。以原子方式写入一条跳转指令,那么新的调用便会被导向到新的函数A'。
因为在今天广泛使用的平坦地址模型下,使用只有两个字节的近跳转指令就可以跳到新的函数了。所以,要做的就是把两个字节的跳转指令和两个补位用的INT ...
Posted in Windows内核调试
by
格蠹老雷
on 2008-11-08
上面的贴是2:06 AM发出的,王宇勤奋呀!天道酬勤,我看到了中国的Alex在崛起^_^很喜欢王宇的这个提议。这个问题虽然很久以前就思考过,但是始终没有深究。
先抛块砖吧:
首先,下面这篇来自微软官方的公开paper介绍了Windows系统中hotpatch的基础,没有读过的朋友不妨先读一读。
http://technet.microsoft.com/en-us/library/cc787843.aspx
第二,在NT内核中有一系列包含hotpatch的函数,虽然没有仔细考察每一个,但想必与hotpatch有关。
lkd> x nt!*hotpatch*805df092 nt!RtlFreeHotPatchData = <no type ...
Posted in Windows内核调试
by
格蠹老雷
on 2008-11-08
从现在的形势看,明年的就业竞争可能非常激烈。考研或许是错过这个低谷的方法,但是可能很多人都这么想。
不过高手始终是紧缺的,越是经济不好,招聘时要求的“性价比”越高。所以,抓紧时间学习本领是重中之重。
大学里学了很多门课,大多数人都很难将它们融合贯通在一起,一个原因是动手实践不够。实践不一定非得找份工作来做,找台电脑踏踏实实写些代码,然后反复调试,认真思考,这就是很好的实践。反复琢磨和推敲,逐步打通一个个枢纽,慢慢的知识就连成片了。
《软件调试》是想帮助读者来把CPU、操作系统、编译原理等课程融汇起来的。但是光靠作者努力不行,书上的每一页还需要读者自己去读、去试验、去领会。吃惯快餐的人可能难以坚持读下去。但如果要立志成为一个高手,就要扎扎实实静下心来,逐字逐句的下番苦功夫。
谨供你参考 ...
Posted in 《软件调试》书友
by
格蠹老雷
on 2008-11-07
在内核调试的初始断点命中后,设置一个数据访问断点ba w1 IopVerifierOn来监视应该就可以得到答案了。
BTW,《软件调试》的19章专门介绍了驱动验证和应用程序验证。
Posted in Windows内核调试
by
格蠹老雷
on 2008-11-07
表16-5列出了十几个ETW工具/实例,P432给出了DDK中WPP的例子位置,P428中有SDK中例子程序的位置。
Posted in Windows内核调试
by
格蠹老雷
on 2008-11-06
《软件调试》的第16章用一整章的篇幅做了介绍。如果你没有《软件调试》,那么SDK和DDK中有一些介绍。请查看如下这些关键字:OpenTrace,ProcessTrace,WPP等。
Posted in Windows内核调试
by
格蠹老雷
on 2008-11-05