程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> xp下用戶程序空間分配(5):加載系統DLL

xp下用戶程序空間分配(5):加載系統DLL

編輯:關於C++

ntdll.dll是加載的第一個系統DLL,它的模塊信息:

名稱 基址 大小 入口點 E:\WINDOWS\system32\ntdll.dll 7c920000 00093000 7c932c28

對應的內存塊:

和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為其分配了一塊空間:

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在內存中分配的空間:

這個和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分配的內存塊:

和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

再看windows分配的內存:

這個也和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

再看分配的 內存:

和EXE文件一樣,這個段也沒有單獨分配的內存,直接和.rsrc段合並在一起。

其它的系統DLL與此 類似,不再說明。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved