Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核调试

帖子发起人: dbger   发起时间: 2014-05-21 21:01 下午   回复: 2

Print Search
帖子排序:    
   2014-05-21, 21:01 下午
advdbg001 离线,最后访问时间: 2014/5/21 4:57:46 dbger

发帖数前500位
注册: 2014-04-14
发 贴: 4
Indifferent [:|] 诡异的cs段描述符
Reply Quote
Target: Windows 7 Professional 64bit

1: kd> r
rax=0000000000002501 rbx=fffff880009e8180 rcx=0000000000000001
rdx=000000000000008a rsi=0000000000002626 rdi=000000000000208a
rip=fffff80002ad6490 rsp=fffff88002f1ba88 rbp=0000000000000000
 r8=fffffa8001745000  r9=0000000000000089 r10=000000000250ab20
r11=fffff88002f1b970 r12=fffff88002f1bac0 r13=fffffa8002c27500
r14=fffffa8002c1e100 r15=0000000000000000
iopl=0         nv up ei pl nz na pe nc
cs=0010  ss=0018  ds=002b  es=002b  fs=0053  gs=002b             efl=00000202
nt!RtlpBreakWithStatusInstruction:
fffff800`02ad6490 cc              int     3
1: kd> rgdtr
gdtr=fffff880009f34c0
1: kd> dd fffff880009f34c0
fffff880`009f34c0  00000000 00000000 00000000 00000000
fffff880`009f34d0  00000000 00209b00 0000ffff 00cf9300
fffff880`009f34e0  0000ffff 00cffb00 0000ffff 00cff300
fffff880`009f34f0  00000000 0020fb00 00000000 00000000
fffff880`009f3500  cec00067 00008b9e fffff880 00000000
fffff880`009f3510  b0007c00 ff40f3fd 00000000 00000000
fffff880`009f3520  0000ffff 00cf9a00 00000000 00000000
fffff880`009f3530  00000000 00000000 00000000 00000000
1: kd> dg 10
                                                    P Si Gr Pr Lo
Sel        Base              Limit          Type    l ze an es ng Flags
---- ----------------- ----------------- ---------- - -- -- -- -- --------
0010 00000000`00000000 00000000`00000000 Code RE Ac 0 Nb By P  Lo 0000029b

Limit值为何为0, 一些段属性也很奇怪?

求调友指教!

IP 地址: 已记录   报告
   2014-05-22, 20:13 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 诡异的cs段描述符
Reply Quote
要理解这个问题,首先需要了解“淡化段机制”的基本思想,在今天的软硬件设计中,已经普遍接受页机制作为主流的内存管理技术,对x86架构来说,因为段机制不可禁止,所以只能淡化它。
因为这个原因,32位到64位扩展时,根本没有加长段描述符,本来8个字节还是8个字节,于是就放不下0xffffffffffffffff这么长的边界值,怎么办呢,就约定下,用本来的一个保留位代表是是不是Long的段(64位段),用0代表无限边界,就是段这一关检验时,看到0边界,就全通过,有点像“节假日高速公路免费” :-)

IP 地址: 已记录   报告
   2014-05-22, 21:40 下午
advdbg001 离线,最后访问时间: 2014/5/21 4:57:46 dbger

发帖数前500位
注册: 2014-04-14
发 贴: 4
Big Smile [:D] Re: 诡异的cs段描述符
Reply Quote
谢谢指点,以前在32bit Windows时都是有个0xFFFFFFFF的段限;一下到64bit有点怪。Hoho~

张老师的《软件调试》里以32bit Windows为环境,《格蠹汇编》里虽然涉及到了一些64bit下的变化(如FS的角色由GS扮演),但比较少。

期待第二版能加入更多关于64bit的下CPU和OS的整块内容。:)


IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » Re: 诡异的cs段描述符

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.