Re: 关于UnhandleExceptionFilter的一些疑问~

Windows内核调试

关于UnhandleExceptionFilter的一些疑问~


aa1ss2 2009-04-13, 21:40 下午
刚刚学到这里,参照伪代码对SP2的UnhandleExceptionFilter跟了一下,发现几个问题想请教一下。

下面的行数全部指的是伪代码。

第一:322页的35行 NtGlobalFlag & 0x1 错了,后面的描述是NtGlobalFlag & 0x100,请问一下这个0x100是什么常量来的?
主要是想知道什么时候设置这个常量,引起调用RtlApplicationVerifierStop函数。


第二:326页的267行好像漏了一句return EXCEPTION_CONTINUE_SEARCH;

第三:hRealProcess和hRealThread的作用是什么呢,好像都没有看到使用。

第四:想请问一下张老师,323页的103行那里的异常处理是怎么看出来的呢?
作用好像是为了在读取注册表失败后写入默认的设置,不知道对不对呢?

Re: 关于UnhandleExceptionFilter的一些疑问~


格蠹老雷 2009-04-14, 12:58 下午

一、你说的对,是应该&0x100,因为汇编代码是直接测试第二个字节(+0x69),我当时疏忽了,多谢。

7c863113 64a118000000    mov     eax,dword ptr fs:[00000018h]
7c863119 8b4030          mov     eax,dword ptr [eax+30h]
7c86311c f6406901        test    byte ptr [eax+69h],1

0x100这个常量的原始定义多半没有公开过,它的含义是vrf,也就是启用App 验证器:

C:\DbgLabs\bin\Debug>gflags /i frecheck.exe +vrf
Current Registry Settings for frecheck.exe executable are: 00000100
    vrf - Enable application verifier

二、对的,这个问题已经在勘误中。

三、见325页

四、进入异常保护块时会修改trylevel变量,参见24.5.2节关于SEH编译的内容。

 

Re: 关于UnhandleExceptionFilter的一些疑问~


aa1ss2 2009-04-14, 13:42 下午
多谢老师回答。
第三个问题我的意思是通过DuplicateHandle获得真正的句柄后,并没有作任何的操作就用CloseHandle给关闭了,那么这样做有什么意义呢?

CsrIdentifyAlertableThread这个函数应该也是没有公开的吧,能不能介绍一下作用?

Re: 关于UnhandleExceptionFilter的一些疑问~


格蠹老雷 2009-04-14, 17:24 下午
不客气;
之间做操作了呀,创建调试器进程,也就是那个CreateProcess调用。因为在创建子进程的过程中会引用父进程的设施,所以复制当前句柄的目的就是防止这期间父进程退出后系统销毁父进程的所有资源。

Re: 关于UnhandleExceptionFilter的一些疑问~


aa1ss2 2009-04-14, 17:50 下午
明白了,没有想到被子进程继承了。

Powered by Community Server Powered by CnForums.Net