Отслеживание обращения к памяти

Тема в разделе "WASM.ASSEMBLER", создана пользователем _ir4_Y_, 31 май 2007.

  1. _ir4_Y_

    _ir4_Y_ New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2007
    Сообщения:
    76
    Начал писать прогу которая отслеживает обращение к определенному участку памяти)
    Как такое реализовывается ?
    Подскажите кто знает плз
    Заранее спасибо...
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    PAGE_NOACCESS или PAGE_GUARD
     
  3. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    _ir4_Y_
    Имеется в виду обращение к диапазону адресов (который у каждого процесса свой) или к конкретным страницам физической памяти?
     
  4. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Жжошь, однако!...
    Конкретизируй вопрос, пожалуйста...
     
  5. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    можно рискнуть использовать MONITOR/MWAIT для отслеживания записи в определнный участок памяти
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Наверное стоит дождаться ответа ТС зачем ему это нужно и в каком окружении (ринг3, ринг0, вирт память, физ память или что еще)
     
  7. _ir4_Y_

    _ir4_Y_ New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2007
    Сообщения:
    76
    Значит так прога должна определять поPID у процесса его адресное пространнство и
    устанавливать брейкпоинт натребуемый адрес ...
    Вот что то в этом духе )
    В ring 3 )
     
  8. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    _ir4_Y_
    NtQueryInformationProcess даст нужную инфу об адресном пространстве процесса.
    Дальше по нужному адресу пишешь байт 0CCh (int 3) и бряк готов. Единственно, нужно позаботиться о том, чтоб байт записался в начало инструкции иначе и бряк не получится и прога вылетит. Так что понадобится дизассемблер длин.
     
  9. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Забыл добавить, что это получится бряк на исполнение кода...
     
  10. _ir4_Y_

    _ir4_Y_ New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2007
    Сообщения:
    76
    2 Twister
    за NtQueryInformationProcess пасибо)
    Но Мне нужно отслеживать обращение к данным а не к коду ...
     
  11. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Возможно, тут пригодятся отладочные регистры drX. Но это уже ring0.
     
  12. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Mika0x65
    отчего же сразу ринг0? через сех их можно менять. tElock так делал (но для кода, а не памяти), я проверял. Ринг3 подойдет
     
  13. _ir4_Y_

    _ir4_Y_ New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2007
    Сообщения:
    76
    А где впринципе можно почитать про drX в Юрове ничего толком так и не нащел ..

    2MSoft
    А можно по конкретнее ))
     
  14. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Т.e. нужно отслеживать обращения не к своему адресному пространству?

    http://www.wasm.ru/article.php?article=debugreg
     
  15. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    _ir4_Y_
    сожалею, но я умею только ставить бряки на исполнение кода, а не на на обращаение к памяти. Если интересует, стучи в аську - дам исходник. Как ставить с пом. тех же регистров бряк на доступ к памяти - не знаю, самому жутко интересно