快速业务通道

xp下用户程序空间分配(4):加载主程序

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
0 entry point (0045BB60) _mainCRTStartup
1000 base of code
5D000 base of data
400000 image base (00400000 to 0046EFFF)
1000 section alignment
200 file alignment
5.00 operating system version
0.00 image version
5.00 subsystem version
0 Win32 version
6F000 size of image
400 size of headers
6F1FE checksum
3 subsystem (Windows CUI)
8140 DLL characteristics
Dynamic base
NX compatible
Terminal Server Aware
100000 size of stack reserve
1000 size of stack commit
100000 size of heap reserve
1000 size of heap commit
0 loader flags
10 number of directories
0 [       0] RVA [size] of Export Directory
63354 [      78] RVA [size] of Import Directory
68000 [     2B4] RVA [size] of Resource Directory
0 [       0] RVA [size] of Exception Directory
0 [       0] RVA [size] of Certificates Directory
69000 [    5844] RVA [size] of Base Relocation Directory
5D2E0 [      1C] RVA [size] of Debug Directory
0 [       0] RVA [size] of Architecture Directory
0 [        0] RVA [size] of Global Pointer Directory
0 [       0] RVA [size] of Thread Storage Directory
62EE0 [      40] RVA [size] of Load Configuration Directory
0 [       0] RVA [size] of Bound Import Directory
5D000 [     2C0] RVA [size] of Import Address Table Directory
0 [       0] RVA [size] of Delay Import Directory
0 [       0] RVA [size] of COM Descriptor Directory
0 [       0] RVA [size] of Reserved Directory

1.2 代码段

先看看从bash.exe里面dump出来的信息:

SECTION HEADER #1
.text name
5BC4E virtual size
1000 virtual address (00401000 to 0045CC4D)
5BE00 size of raw data
400 file pointer to raw data (00000400 to 0005C1FF)
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

它请求的地 址是0x0040 1000,看看在内存里的section head:

xp下用户程序空间分配(4):加载主程序

下面是windows为这个段分配的内存块:

xp下用户程序空间分配(4):加载主程序

显然windows是满足文件的请求了。

再比较dump出来的代码段的原始数据和内存里的数据:

0x00401000  55 8b ec 81 ec d4 00 00 00 53 56 57 8d bd 2c ff  U........SVW..,.
0x00401010  ff ff b9 35 00 00 00 b8 cc cc cc cc f3 ab 8b 45  ...5...........E
0x00401020  14 83 e0 01 89 45 f8 8b 45 08 0f be 08 83 f9 3d  .....E..E......=

可以发现它们的内容是一致的。

在vs2008里面可以看到这段代码反汇编的结果:

int
binary_test (op, arg1, arg2, flags)
char *op, *arg1, *arg2;
int flags;
{
00401000 55               push        ebp 
00401001 8B EC            mov         ebp,esp
00401003 81 EC D4 00 00 00 sub          esp,0D4h
00401009 53               push        ebx 
0040100A 56               push        esi 
0040100B 57               push        edi 
0040100C 8D BD 2C FF FF FF lea         edi,[ebp-0D4h]
00401012 B9 35 00 00 00   mov         ecx,35h
00401017 B8 CC CC CC CC   mov         eax,0CCCCCCCCh
0040101C F3 AB            rep st

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号