当前位置:主页   - 电脑 - 程序设计 - C/C++
xp下用户程序空间分配(3):加载文件
来源:网络   作者:快乐虾   更新时间:2011-08-11
收藏此页】    【字号    】    【打印】    【关闭

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

     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:embedetoolsDebugbinbash.exe

  00400000

  0006f000

  0045bb30

  E:WINDOWSsystem32ntdll.dll

  7c920000

  00093000

  7c932c28

  E:WINDOWSsystem32kernel32.dll

  7c800000

  0011e000

  7c80b63e

  E:WINDOWSsystem32WS2_32.dll

  71a20000

  00017000

  71a21273

  E:WINDOWSsystem32ADVAPI32.dll

  77da0000

  000a9000

  77da70fb

  E:WINDOWSsystem32RPCRT4.dll

  77e50000

  00092000

  77e5628f

  E:WINDOWSsystem32Secur32.dll

  77fc0000

  00011000

  77fc2126

  E:WINDOWSsystem32msvcrt.dll

  77be0000

  00058000

  77bef2a1

  E:WINDOWSsystem32WS2HELP.dll

  71a10000

  00008000

  71a11638

  f:embedetoolsDebugbincygwin.dll

  10000000

  0022f000

  100a17e0

  E:WINDOWSsystem32NETAPI32.dll

  5fdd0000

  00055000

  5fdd8b48

  E:WINDOWSsystem32PSAPI.DLL

  76bc0000

  0000b000

  76bc10f1

  E:WINDOWSsystem32WINMM.dll

  76b10000

  0002a000

  76b12b61

  E:WINDOWSsystem32GDI32.dll

  77ef0000

  00049000

  77ef6587

  E:WINDOWSsystem32USER32.dll

  77d10000

  00090000

  77d1b217

  E:WINDOWSsystem32SHELL32.dll

  7d590000

  007f4000

  7d5b74d6

  E:WINDOWSsystem32SHLWAPI.dll

  77f40000

  00076000

  77f451fb

  E:WINDOWSsystem32ole32.dll

  76990000

  0013d000

  769ad0b9

  E:WINDOWSWinSxSx86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456MSVCP90D.dll

  10480000

  000d6000

  104f51b0

  E:WINDOWSWinSxSx86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456MSVCR90D.dll

  00470000

  00123000

  004ac6f0

  E:WINDOWSsystem32IMM32.DLL

  76300000

  0001d000

  763012c0

  E:WINDOWSsystem32LPK.DLL

  62c20000

  00009000

  62c22ead

  E:WINDOWSsystem32USP10.dll

  73fa0000

  0006b000

  73fbe409

  E:WINDOWSWinSxSx86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83comctl32.dll

  77180000

  00103000

  77184256

  E:WINDOWSsystem32comctl32.dll

  5d170000

  0009a000

  5d1734ba

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

编缉推荐阅读以下文章

  • xp下用户程序空间分配(9):还剩下什么?
  • xp下用户程序空间分配(8):MEM_MAPPED
  • xp下用户程序空间分配(7):Heap
  • xp下用户程序空间分配(6):加载用户DLL
  • xp下用户程序空间分配(5):加载系统DLL
  • xp下用户程序空间分配(4):加载主程序
  • xp下用户程序空间分配(2):栈
  • xp下用户程序空间分配(1):大致框架
其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明