Сейчас на форуме: _MBK_ (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Помогите разобраться с memory map
Посл.ответ Сообщение

Ранг: 3.1 (гость)
Активность: 0.010
Статус: Участник

Создано: 07 марта 2011 15:01
· Личное сообщение · #1

После загрузки программы и до выполнения основного кода система уже каким-то образом нарезает память и заполняет её.
Вот пример memory map от блокнота:
Code:
  1. Address     Size       Owner                         Section    Contains                      Type             Access         Initial access    Mapped as
  2. 00010000    00001000            00010000 (itself)                                             Priv 00021004    RW             RW
  3. 00020000    00001000            00020000 (itself)                                             Priv 00021004    RW             RW
  4. 0005E000    00001000            00030000                                                      Priv 00021104    RW  Guarded    RW
  5. 0005F000    00011000            00030000                        stack of main thread          Priv 00021104    RW  Guarded    RW
  6. 00070000    00003000            00070000 (itself)                                             Map  00041002    R              R
  7. 00080000    00002000            00080000 (itself)                                             Map  00041002    R              R
  8. 00090000    00001000            00090000 (itself)                                             Priv 00021004    RW             RW
  9. 000A0000    00040000            000A0000 (itself)                                             Priv 00021040    RWE            RWE
  10. 000E0000    00001000            000E0000 (itself)                                             Priv 00021040    RWE            RWE
  11. 000F0000    00006000            000F0000 (itself)                                             Priv 00021004    RW             RW
  12. 001F0000    00006000            001F0000 (itself)                                             Priv 00021004    RW             RW
  13. 00200000    00003000            00200000 (itself)                                             Map  00041004    RW             RW
  14. 00210000    00016000            00210000 (itself)                                             Map  00041002    R              R                 \Device\HarddiskVolume1\WINDOWS\system32\unicode.nls
  15. 00230000    00041000            00230000 (itself)                                             Map  00041002    R              R                 \Device\HarddiskVolume1\WINDOWS\system32\locale.nls
  16. 00280000    00041000            00280000 (itself)                                             Map  00041002    R              R                 \Device\HarddiskVolume1\WINDOWS\system32\sortkey.nls
  17. 002D0000    00006000            002D0000 (itself)                                             Map  00041002    R              R                 \Device\HarddiskVolume1\WINDOWS\system32\sorttbls.nls
  18. 002E0000    00004000            002E0000 (itself)                                             Priv 00021004    RW             RW
  19. 002F0000    00003000            002F0000 (itself)                                             Map  00041002    R              R                 \Device\HarddiskVolume1\WINDOWS\system32\ctype.nls
  20. 00300000    00004000            00300000 (itself)                                             Map  00041020    R E            R E
  21. 003C0000    00002000            00300000                                                      Map  00041020    R E            R E
  22. 003D0000    00103000            003D0000 (itself)                                             Map  00041002    R              R
  23. 004E0000    00001000            004E0000 (itself)                                             Priv 00021004    RW             RW
  24. 004F0000    00097000            004F0000 (itself)                                             Map  00041020    R E            R E
  25. 007F0000    00001000            007F0000 (itself)                                             Priv 00021004    RW             RW
  26. 00800000    00002000            00800000 (itself)                                             Map  00041002    R              R
  27. 00810000    00002000            00810000 (itself)                                             Map  00041002    R              R
  28. 00820000    00003000            00820000 (itself)                                             Priv 00021004    RW             RW
  29. 01000000    00001000   NOTEPAD  01000000 (itself)               PE header                     Imag 01001002    R              RWE
  30. 01001000    00008000   NOTEPAD  01000000             .text      SFX,code,imports              Imag 01001002    R              RWE
  31. 01009000    00002000   NOTEPAD  01000000             .data      data                          Imag 01001002    R              RWE
  32. 0100B000    00009000   NOTEPAD  01000000             .rsrc      resources                     Imag 01001002    R              RWE
  33. 72FC0000    00001000   WINSPOOL 72FC0000 (itself)               PE header                     Imag 01001002    R              RWE
  34. 72FC1000    00020000   WINSPOOL 72FC0000             .text      SFX,code,imports,exports      Imag 01001002    R              RWE
  35. 72FE1000    00002000   WINSPOOL 72FC0000             .data      data                          Imag 01001002    R              RWE
  36. 72FE3000    00001000   WINSPOOL 72FC0000             .rsrc      resources                     Imag 01001002    R              RWE
  37. 72FE4000    00002000   WINSPOOL 72FC0000             .reloc                                   Imag 01001002    R              RWE
  38. ...
  39. 7E360000    00001000   USER32   7E360000 (itself)               PE header                     Imag 01001002    R              RWE
  40. 7E361000    00060000   USER32   7E360000             .text      SFX,code,imports,exports      Imag 01001002    R              RWE
  41. 7E3C1000    00002000   USER32   7E360000             .data                                    Imag 01001002    R              RWE
  42. 7E3C3000    0002B000   USER32   7E360000             .rsrc      resources                     Imag 01001002    R              RWE
  43. 7E3EE000    00003000   USER32   7E360000             .reloc                                   Imag 01001002    R              RWE
  44. 7F6F0000    00007000            7F6F0000 (itself)                                             Map  00041020    R E            R E
  45. 7FFB0000    00024000            7FFB0000 (itself)                                             Map  00041002    R              R
  46. 7FFD8000    00001000            7FFD8000 (itself)                                             Priv 00021004    RW             RW
  47. 7FFDF000    00001000            7FFDF000 (itself)               data block of main thread     Priv 00021004    RW             RW
  48. 7FFE0000    00001000            7FFE0000 (itself)                                             Priv 00021002    R              R

С адресами 01000000-01014000 всё понятно - информацию берём из секций файла и обращаем внимание на "память инициализирована".
Стек по адресу 0005F000 тоже описан в PE заголовке.
С 72FC0000 по 7E3F1000 - идут секции загруженных dll.
7FFDF000 - это информация о потоке.
А дальше начинается тёмный лес.

Например, что за блок с адреса 001F0000?
001F0000 00006000 001F0000 (itself) Priv 00021004 RW RW
Почему он был создан именно по этому адресу и откуда взялись данные для его заполнения?

Может быть есть внятное описание или руководство?


 eXeL@B —› Вопросы новичков —› Помогите разобраться с memory map
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати