代码之家  ›  专栏  ›  技术社区  ›  psaghelyi

为什么OSX中的0x1F段是特殊的?

  •  1
  • psaghelyi  · 技术社区  · 16 年前

    一些mach-o可执行文件有一个lc-unixthread命令,其初始寄存器值如下:

    cmd LC_UNIXTHREAD
        cmdsize 80
         flavor i386_THREAD_STATE
          count i386_THREAD_STATE_COUNT
            eax 0x00000000 ebx    0x00000000 ecx 0x00000000 edx 0x00000000
            edi 0x00000000 esi    0x00000000 ebp 0x00000000 esp 0x00000000
            ss  0x0000001f eflags 0x00000000 eip 0x00002788 cs  0x00000017
            ds  0x0000001f es     0x0000001f fs  0x00000000 gs  0x00000000
    

    这个 欧洲经济合作计划 设置为应用程序的入口点,但出于某种原因,其余的也有一个特殊的初始值。(如果它们都是零,则应用程序会随机崩溃,因为某些malloc()不会返回干净的内存区域。) 你知道神秘的0x1F段吗?

    3 回复  |  直到 13 年前
        1
  •  1
  •   snemarch    16 年前

    selector 0x17: RPL3, LDT, descriptor index 0x10
    selector 0x1F: RPL3, LDT, descriptor index 0x18
    

    CODE: 0x1B - RPL3, GDT, descriptor index 0x10
    DATA: 0x23 - RPL3, GDT, descriptor index 0x20
    
        2
  •  0
  •   psaghelyi    15 年前

    SDK10.4, Target10.4: /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/crt1.o
    SDK10.5, Target10.4: /Developer/SDKs/MacOSX10.5.sdk/usr/lib/crt1.o
    SDK10.5, Target10.5: /Developer/SDKs/MacOSX10.5.sdk/usr/lib/crt1.10.5.o
    SDK10.6, Target10.4: /Developer/SDKs/MacOSX10.6.sdk/usr/lib/crt1.o
    SDK10.6, Target10.5: /Developer/SDKs/MacOSX10.6.sdk/usr/lib/crt1.10.5.o
    SDK10.6, Target10.6: /Developer/SDKs/MacOSX10.6.sdk/usr/lib/crt1.10.6.o
    

        3
  •  0
  •   E.T    13 年前