快乐虾
http://blog.youkuaiyun.com/lights_joy/
lights@hb165.com
本文适用于
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)
XP程序内存布局探索
2万+

被折叠的 条评论
为什么被折叠?



