xp下用户措施空间分派(5):加载系统DLL
当前位置:以往代写 > C/C++ 教程 >xp下用户措施空间分派(5):加载系统DLL
2019-06-13

xp下用户措施空间分派(5):加载系统DLL

xp下用户措施空间分派(5):加载系统DLL

副标题#e#

ntdll.dll是加载的第一个系统DLL,它的模块信息:

名称 基址 巨细 进口点
E:\WINDOWS\system32\ntdll.dll 7c920000 00093000 7c932c28

对应的内存块:

xp下用户法子空间分配(5):加载系统DLL

和exe略微有所区别,照旧用dumpbin把它的文件内容导出来举办较量。

1.1 文件头

DLL和EXE文 件一样都是PE名目,因此它们的文件头的布局是一样的,看看从ntdll.dll中dump出来的信息:

14C machine (x86)
4 number of sections
4802BDC5 time date stamp Mon Apr 14 10:13:25 2008
0 file pointer to symbol table
0 number of symbols
E0 size of optional header
210E characteristics
Executable
Line numbers stripped
Symbols stripped
32 bit word machine
DLL

Windows为其分派了一块空间:

xp下用户法子空间分配(5):加载系统DLL


#p#副标题#e#

1.2 代码段

先看看文件中要求分派的地点:

SECTION HEADER #1
.text name
79FB6 virtual size
1000 virtual address (7C921000 to 7C99AFB5)
7A000 size of raw data
400 file pointer to raw data (00000400 to 0007A3FF)
0 file pointer to relocation table
0 file pointer to line numbers
0 number of relocations
0 number of line numbers
60000020 flags
Code
Execute Read

再看看 windows在内存中分派的空间:

xp下用户法子空间分配(5):加载系统DLL

这个和EXE文件是一样的。

1.3 数据段

这个DLL内里居然没有只读的数据段,直接就是一个数据段。

SECTION HEADER #2
.data name
4A00 virtual size
7B000 virtual address (7C99B000 to 7C99F9FF)
3200 size of raw data
7A400 file pointer to raw data (0007A400 to 0007D5FF)
0 file pointer to relocation table
0 file pointer to line numbers
0 number of relocations
0 number of line numbers
C0000040 flags
Initialized Data
Read Write

看看windows分派的内存块:

xp下用户法子空间分配(5):加载系统DLL

和exe文件对比,这个数据段分为了三块,不像exe那样只分为两块。

1.4 .rsrc

文件中dump出来的头信息:

SECTION HEADER #3
.rsrc name
F7D4 virtual size
80000 virtual address (7C9A0000 to 7C9AF7D3)
F800 size of raw data
7D600 file pointer to raw data (0007D600 to 0008CDFF)
0 file pointer to relocation table
0 file pointer to line numbers
0 number of relocations
0 number of line numbers
40000040 flags
Initialized Data
Read Only

#p#副标题#e#

再看windows分派的内存:

xp下用户法子空间分配(5):加载系统DLL

这个也和EXE文件一样,没什么说的。

1.5 .reloc

看看文件头:

SECTION HEADER #4
.reloc name
2E84 virtual size
90000 virtual address (7C9B0000 to 7C9B2E83)
3000 size of raw data
8CE00 file pointer to raw data (0008CE00 to 0008FDFF)
0 file pointer to relocation table
0 file pointer to line numbers
0 number of relocations
0 number of line numbers
42000040 flags
Initialized Data
Discardable
Read Only

再看分派的 内存:

xp下用户法子空间分配(5):加载系统DLL

和EXE文件一样,这个段也没有单独分派的内存,直接和.rsrc段归并在一起。

其它的系统DLL与此 雷同,不再说明。

    关键字:

在线提交作业