xp下用户程序空间分配(3):加载文件

快乐虾

http://blog.csdn.net/lights_joy/

[email protected]

本文适用于

Xp sp3

vs2008

欢迎转载,但请保留作者信息

一个程序要想执行,总是要加载到内存里面的,为此我们使用下面的代码查询所有模块的信息,再找到它们在内存里面的对应位置:

HANDLE hProcess;

HMODULE hModule[0x70];

TCHAR strFileName[MAX_PATH];

DWORD cbNeeded;

MODULEINFO modinfo;

hProcess = GetCurrentProcess();

if(EnumProcessModules(hProcess, hModule, sizeof(HMODULE) * 0x30, &cbNeeded))

{

for(n = 0; n < cbNeeded / sizeof(HMODULE); n++)

{

GetModuleFileName(hModule[n], strFileName, MAX_PATH);

GetModuleInformation( hProcess, hModule[n], &modinfo, sizeof(MODULEINFO) );

// 根据lpBaseOfDll得到其它的数据

……………

}

}

于是就得到了下面的结果(数值均为十六进制):

名称

基址

大小

入口点

f:\embed\etools\Debug\bin\bash.exe

00400000

0006f000

0045bb30

E:\WINDOWS\system32\ntdll.dll

7c920000

00093000

7c932c28

E:\WINDOWS\system32\kernel32.dll

7c800000

0011e000

7c80b63e

E:\WINDOWS\system32\WS2_32.dll

71a20000

00017000

71a21273

E:\WINDOWS\system32\ADVAPI32.dll

77da0000

000a9000

77da70fb

E:\WINDOWS\system32\RPCRT4.dll

77e50000

00092000

77e5628f

E:\WINDOWS\system32\Secur32.dll

77fc0000

00011000

77fc2126

E:\WINDOWS\system32\msvcrt.dll

77be0000

00058000

77bef2a1

E:\WINDOWS\system32\WS2HELP.dll

71a10000

00008000

71a11638

f:\embed\etools\Debug\bin\cygwin.dll

10000000

0022f000

100a17e0

E:\WINDOWS\system32\NETAPI32.dll

5fdd0000

00055000

5fdd8b48

E:\WINDOWS\system32\PSAPI.DLL

76bc0000

0000b000

76bc10f1

E:\WINDOWS\system32\WINMM.dll

76b10000

0002a000

76b12b61

E:\WINDOWS\system32\GDI32.dll

77ef0000

00049000

77ef6587

E:\WINDOWS\system32\USER32.dll

77d10000

00090000

77d1b217

E:\WINDOWS\system32\SHELL32.dll

7d590000

007f4000

7d5b74d6

E:\WINDOWS\system32\SHLWAPI.dll

77f40000

00076000

77f451fb

E:\WINDOWS\system32\ole32.dll

76990000

0013d000

769ad0b9

E:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\MSVCP90D.dll

10480000

000d6000

104f51b0

E:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\MSVCR90D.dll

00470000

00123000

004ac6f0

E:\WINDOWS\system32\IMM32.DLL

76300000

0001d000

763012c0

E:\WINDOWS\system32\LPK.DLL

62c20000

00009000

62c22ead

E:\WINDOWS\system32\USP10.dll

73fa0000

0006b000

73fbe409

E:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll

77180000

00103000

77184256

E:\WINDOWS\system32\comctl32.dll

5d170000

0009a000

5d1734ba

咱先找几个有意思的看看。

1 参考资料

xp下用户程序空间分配(2):栈(2009-8-26)

xp下用户程序空间分配(1):大致框架(2009-8-26)

你可能感兴趣的:(windows,框架,Microsoft,XP,bash)