Как просмотреть содержимое оперативной памяти?

Тема в разделе "WASM.BEGINNERS", создана пользователем blizzard, 31 дек 2007.

  1. blizzard

    blizzard New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    9
    Есть программы, позволяющие полностью увидеть содержимое оперативки (это не бредовая идея, случайно, содержимое ведь меняется?)?
    По идее, сегмент+смещение (4 байта, 2^32 - 4 млрд адресов) должны показывать все, но в Turbo Debugger'е наблюдаю какую-то фигню: загружаю в первый TD программу, смотрю на ее данные и их положение в памяти, запускаю второй TD, перехожу по тому же адресу - совершенно другой код. Я знаю, что отладчик меняет исполняемую программу, но не так же сильно!
     
  2. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    blizzard
    учи мат часть
    Каждый процесс выполняется В СВОЕМ ВИРТУАЛЬНОМ АДРЕССНОМ ПРОСТРАНСТВЕ
     
  3. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    http://www.wasm.ru/publist.php?list=24
     
  4. blizzard

    blizzard New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    9
    Понятно. Но вопрос все равно остается: есть такие программы? Или ассемблер чего-то не может? :)
     
  5. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    1. Artmoney
    2. В пакете masm32 при установленном KmdKit в папке тоолз есть просмотр содержимого оперативы
    3. Либо в Visual Studio нажми Alt+6
     
  6. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    /dev/mem
    это в Linux естественно
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    при чем тут ассемблер?

    в защищенном режиме нельзя аппаратно - виртуализация памяти. в реальном режиме можно, но там сегмент+смещение это 20 бит и 1 миллион адресов. так что о чем идет речь я не понял

    ?? ты о чем
     
  8. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    дык собрать по страницом чо куда отображаецо ведь можно ;)
     
  9. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Я пытался вгонять винду в бсод с поставленной галкой "Сдампить всё ОЗУ при ошибке" в настройках, но дампится, как я понял, не всё. Если нужно всё, кроме первого мегабайта, проще нажать сброс, загрузить ДОС и посмотреть память. А ещё проще воспользоваться winHEX'ом или аналогичным просмотрщиком, правда нет доступа к адресам 1000-10000
    Это естественно. даже несмотря на то, что винда создала одинаковые среды для эмуляции, дебугер скорее всего были запущены по-разному, соответствено легли в разные области памяти и программы, в них загруженные.
     
  10. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    она лазит в АП атакуемого процесса, а не по всей RAM'ке
     
  11. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Freeman
    А кто сказал что все страницы куда-то ображаются? =)
    нет, дампится всё ОЗУ. Смотри мою статейку по дампу, я там написал как и что дампится и при каких галочках.

    В любом случае всё озу можно посмотреть через NtSysDbgCtrl
     
  12. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    а кто мешает по страничке последовательно отображать
    физические страницы на адресное пространство ядра?
    через MmMapIoSpace() например
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    не думаю что ему нужно в ядре ))
     
  14. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    blizzard
    все зависит от того какая преследуется цель.
    Сдампить то можно все - но хватит ли у тебя сил?

    Если ты тут используешь TD значит ты совсем не ориентируешься в теме, т к он как уже было сказано выше запускается в режиме эмуляции под вирт машиной. Так в чем собственно дело? Для чего это все?
     
  15. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    MmMapIoSpace - это ж ядерная функция
    если есть что-то другое аналогичное юзермодное
    тогда можно это и использовать
     
  16. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    тока не везде буит пахать, наверна
     
  17. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    rei3er
    ээ sysdbgctrl?)

    ну да, до 2к3 сп1 или где там ее прикрыли..
     
  18. blizzard

    blizzard New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    9
    Great
    Ну, по-моему, такие вещи как просмотр памяти должны выполняться с использованием низкоуровневых средств.

    Блин, совсем забыл

    Vov4ick
    Мне очень нравится HexWorkshop, но там по-моему нет такой возможности - если им кто-то пользовался, может, я что-то просмотрел?

    UTeX
    Самый общий ответ - просто интересно. В частности - вот с этим отладчиком - даже он показывает не то, что на самом деле в памяти находится, а хочется видеть реальную картину.

    Кстати, я решил на MASM перейти. Понял, что модель Flat рулит, пришлось отказаться от DOS-овских ф-й по работе с файлами, а даже простейших констант по работе с файлами в TASM 5.0 почему-то нет. Неужели его так давно закрыли?

    Большое всем спасибо.
     
  19. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А по-моему, Си ничем не хуже и у тебя вообще странные понятия о низкоуровневых средствах, очень смахивающие на общепринятые в среде, где не знают про ассемблер и подобное, стереотипы. Слышали звон, да не знают где он. Без обид, если я не прав, но очень смахивает

    Смотреть физическую память тебе не нужно, поверь. Смотреть виртуальну память можно в олли например.

    И вообще я кстати не понял, ты пишешь про ДОС, про эмуляцию ДОС или про Win32?
    Иногда заикаешься про TD, иногда про сегмент-смещение, иногда про запуск второго (!) TD.
    Разберись уж!
    1) Если ты в реальном режиме, тогда есть классный отладчик AfdPro. Смотришь память как хочешь
    2) Если ты в Windows, в режиме эмуляции DOS, тогда советую тот же отладчик, но лишь с той разницей - программы, замущенные в разных "окнах" DOS, друг на друга не влияют (обычно). Поэтому что ты ожидаешь увидеть, запустив "второй" TD, я не знаю.
    3) Если ты в Win32, я уже посоветовал Olly
     
  20. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    Человек просто не знает разницы между реальным и защищенным режимами, отсюда и подобные вопросы.
    Он не знает, что такое собственное 4хГб виртуальное адрессное пространство,
    При запуске нескольких копий олли в отдельных регионах памяти он наблюдает разные картинки. И думает, что это отладчик портит память.
    Он не понимает, что у каждой копии олли свое АП. Он думает, что все приложения "видят друг друга" и находятся в одном АП, как в ДОСе.

    Тот же эффект "порчи отладчиком памяти" он хочет в досе воспроизвести, не понимая, в чем разница. Отсюда и эксперементы с 2мя и более копиями TD

    А вы тут о ядре и о системных функциях глаголите... К основам его отправляйте... Человек полный нуб.