Честно говоря, лучший способ сделать это - вероятно, инструменты, как предложил Питер, в зависимости от ваших целей. Вы когда-нибудь запускали скрипт, который шагал по коду в отладчике? Даже автоматизированный это невероятно медленно. Единственная другая альтернатива, которую я вижу, это ошибки страницы, которые также будут невероятно медленными, но все же должны быть быстрее, чем один шаг. По сути, вы делаете каждую страницу, не входящую в секцию, выполняемую в данный момент, недоступной. Любой доступ к RW вне исполняемого кода вызовет исключение, при котором вы можете регистрировать детали и обрабатывать их. Конечно, у этого есть много недостатков - вы не можете обнаружить RW на текущей странице, он все еще будет медленным, он может усложниться, например, обработка передачи страницы, несколько потоков и т. Д. Последнее возможное решение, которое у меня естьбудет иметь прерывание по таймеру, которое проверяет доступ RW для каждой страницы. Это было бы невероятно быстро и, хотя оно не предоставило бы никаких конкретных адресов, оно дало бы вам совокупность страниц, написанных и прочитанных с. На самом деле я не совсем уверен, что Windows уже предоставляет эту информацию, и я также не уверен, есть ли надежный способ гарантировать, что ваши таймеры будут включены до того, как ядро очистит эти биты.