快速业务通道

xp下用户程序空间分配(9):还剩下什么?

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
0 6e 00 and Settin
0x00010104 67 00 73 00 5c 00 41 00 6c 00 6c 00 20 00 55 00 73 00 65 00 gs\All Use
0x00010118 72 00 73 00 00 00 41 00 50 00 50 00 44 00 41 00 54 00 41 00 rs.APPDATA
0x0001012C 3d 00 45 00 3a 00 5c 00 44 00 6f 00 63 00 75 00 6d 00 65 00 =E:\Docume
0x00010140 6e 00 74 00 73 00 20 00 61 00 6e 00 64 00 20 00 53 00 65 00 nts and Se
0x00010154 74 00 74 00 69 00 6e 00 67 00 73 00 5c 00 00 5f d1 53 05 80 ttings\开发者
0x00010168 5c 00 41 00 70 00 70 00 6c 00 69 00 63 00 61 00 74 00 69 00 \Applicati
0x0001017C 6f 00 6e 00 20 00 44 00 61 00 74 00 61 00 00 00 42 00 58 00 on Data.BX
0x00010190 53 00 48 00 41 00 52 00 45 00 3d 00 2e 00 00 00 43 00 44 00 SHARE=..CD
0x000101A4 53 00 52 00 4f 00 4f 00 54 00 3d 00 65 00 3a 00 5c 00 65 00 SROOT=e:\e

都是些unicode文本,把它的内容和系统环境变量进行比较,差别还是比较明显的 ,但是系统环境变量和用户环境变量在这块内存区里都可以找到相应的定义。尝试在用户环境变量里添 加一个定义,再重新运行程序,果然在这块区域里找到了这个新的环境变量。

1.2 NT_TIB

每个线 程都有一块地方记录线程的基本信息,在程序里有三个线程,想必应该有三块空间,读出fs的内容,可 以发现主线程的这个信息存放在0x7ffd f000,看下它的原始数据:

0x7FFDF000  a8 ff 12 00 00 00 13 00 00 10 0e 00 00 00 00 00  ................
0x7FFDF010  00 1e 00 00 00 00 00 00 00 f0 fd 7f 00 00 00 00  ................
0x7FFDF020  30 0e 00 00 d4 07 00 00 00 00 00 00 00 00 00 00  0...............
0x7FFDF030  00 d0 fd 7f b7 00 00 00 00 00 00 00 00 00 00 00  ................
0x7FFDF040  00 b3 6e e3 00 00 00 00 00 00 00 00 00 00 00 00  ..n.............

将之转换为NT_TIB结构体:

ExceptionList 0x0012ffa8 _EXCEPTION_REGISTRATION_RECORD *
StackBase 0x00130000 void *
StackLimit 0x000e1000 void *
SubSystemTib 0x00000000 void *
FiberData 0x00001e00 void *
Version 0x00000000 unsigned long
ArbitraryUserPointer 0x7ffdf000 void *

使用同样的方法,可以得到另一个线程的NT_TIB存放在0x7ffd e0000。

0x7FFDE000  dc ff cd 00 00 00 ce 00 00 a0 cd 00 00 00 00 00  ................
0x7FFDE010  00 1e 00 00 00 00 00 00 00 e0 fd 7f 00 00 00 00  ................
0x7FFDE020  30 0e 00 00 c4 09 00 00 00 00 00 00 00 00 00 00  0...............
0x7FFDE030  00 d0 fd 7f 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x7FFDE040  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................

将 之转换为NT_TIB结构体:

ExceptionList 0x00cdffdc {Next=0xffffffff Handler=0x7c839ac0 } _EXCEPTION_REGISTRATION_RECORD *
StackBase 0x00ce0000 void *
StackLimit 0x00cda000 void *
SubSystemTib 0x00000000 void *
FiberData 0x00001e00 void *
Version 0x00001e00 unsigned long
ArbitraryUserPointer 0x00000000 void *

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号