OS:win XP sp2
CPU: Intel Dual 2.0G
Hi!Raymond,
猜测你最近很忙,最近一周没来过,今天看到你来了,很高兴:)
在学习《软件调试》中遇见几个问题,特请教,谢谢!
Q1:《软件调试》p179提到sysenter和sysexit两个指令,在GDT中各有两个描述符,我用windbg的命令
dg 0 100
想查看书中所提到的这四个描述符,但是我没法从输出结果中辨认出这四个描述符,请问该如何确认?
Q2:《软件调试》p179提到系统会用cpuid指令来选择是使用sysenter,或是int 2e
请问在windbg是否能够使用cpuid指令,并根据使用cpuid指令的结果以能够再现系统选择sysenter或int 2e的过程?
Q3:学习《软件调试》p180的实验中,在我电脑上反汇编ntReadFile和systemcallstub,ntReadFile反汇编的结果基本和书上一致,但是systemcallstub反汇编的结果却截然不同,没有出现sysenter指令,如下所示:
kd> u ntdll!ntReadFile ntdll!ZwReadFile: 7c92e27c b8b7000000 mov eax,0B7h 7c92e281 ba0003fe7f mov edx,offset SharedUserData!SystemCallStub (7ffe0300) 7c92e286 ff12 call dword ptr [edx] 7c92e288 c22400 ret 24h 7c92e28b 90 nop ntdll!NtReadFileScatter: 7c92e28c 90 nop 7c92e28d 90 nop 7c92e28e 90 nop
kd> u systemcallstub SharedUserData!SystemCallStub: 7ffe0300 8beb mov ebp,ebx 7ffe0302 92 xchg eax,edx 7ffe0303 7c94 jl SharedUserData+0x299 (7ffe0299) 7ffe0305 eb92 jmp SharedUserData+0x299 (7ffe0299) 7ffe0307 7c00 jl SharedUserData!SystemCallStub+0x9 (7ffe0309) 7ffe0309 0000 add byte ptr [eax],al 7ffe030b 0000 add byte ptr [eax],al 7ffe030d 0000 add byte ptr [eax],al
另外,反汇编u nt!kifastcallentry l20 时与书上的结果也不同,请问原因?
谢谢!
|