Написать программу проверка памяти
Часто возникает необходимость найти и поменять какие-либо строки/числа в чужой программе. С этой задачей лучше всего справляется ArtMoney. Для тех, кто не умеет или не хочет использовать отладчики, это на сегодня, наверное, единственный вариант, так как нормальных аналогов просто нету. Хотя ArtMoney и поддерживает очень много возможностей для работы с памятью, весь процесс происходит вручную, без возможности создания действий по алгоритму. Если значений много и их надо, например, менять при каждом запуске программы, то время, затрачиваемое на эту работу, превышает всякие допустимые пределы. Выход один — написать свой редактор памяти!
Ищем исходники
В свое время у меня возникла задача, требующая модификации значений в памяти другой программы постоянно во время ее работы. Одним из условий было, что программа будет работать и на других машинах, а это значит, что вариант записи в память по заранее определенным адресам не подходил бы: адреса для разных машин будут разные и нужно реализовывать именно поиск адресов в памяти.
Я принялся за написание загрузчика и стал искать информацию по этому вопросу. К сожалению я не владею Delphi, и когда обнаружилось, что большинство исходников именно на этом языке, я немного растерялся. Переписывать огромное количество кода на C++ у меня не было ни времени, ни возможности. Еще одним открытием стало, что ни один из найденных мной исходников не работал корректно: программа либо висла, либо работала с ошибками. К тому же работа всех этих программ по поиску в памяти занимала гораздо больше времени, чем должна (раз в 15-20 дольше ArtMoney).
Поиск по форумам (в т.ч. и английским) так же не был радостным: в темах, связанных с сабжем по C++ были обрывки кода (явно без необходимого функционала). Не помню тем, где бы автор успешно решил свой вопрос. Тем не менее я вынес определенные знания про устройство оперативной памяти в Windows и узнал о функциях, используемых в работе.
После нескольких дней мучений я нашел один полезный топик. Автор приводит вполне рабочую программу на C++, к сожалению работала она очень медленно. Решение есть там же в предпоследнем посте. Осталось только скомпоновать два кода и снабдить их комментариями. Думаю, приведенная ниже программа многим поможет решить задачу поиска по памяти процесса, ну и узнать что-то новое.
Поиск и редактирование значений в памяти программы
Программа для теста
Сам редактор
В заключении
Код сыроват, есть над чем поработать, но это, видимо, единственный готовый пример решения задачи на C++ в рунете. Я намеренно не стал делать здесь все исправления и освещать все ньюансы, т.к. это сильно раздуло бы статью (а она и так не маленькая получилась). В любом случае он будет полезен, как каркас для написания редактора памяти под свои нужды, а так же дает понимание, как надо производить поиск в памяти, чтобы он занимал несколько секунд, а не минут.
Если сбои системы, синие экраны BSoD или иные проблемы при работе Windows 10, 8.1 или Windows 7 наводят вас на мысли о том, что имеются какие-либо проблемы с оперативной памятью компьютера, может иметь смысл выполнить её проверку, а начать можно со встроенного средства диагностики проверки памяти Windows.
В этой инструкции подробно о способах запустить средство проверки памяти средствами Windows, причём даже в тех случаях, когда вход в систему невозможен, а также о возможных вариантах действий в случае, если в результате теста средство диагностики памяти сообщает о том, что были обнаружены проблемы оборудования. На схожую тему: Устранение неполадок Windows 10.
Как запустить средство проверки памяти в Windows 10 и предыдущих версиях системы
В случае, если операционная система запускается, вход в неё и работа возможны, вы можете использовать один из следующих вариантов запуска средства проверки памяти:
- Найти нужный пункт в разделе «Средства администрирования Windows» меню «Пуск».
- Нажать клавиши Win+R на клавиатуре, ввести mdsched.exe и нажать Enter.
- Открыть панель управления, выбрать пункт «Администрирование» и запустить «Средство проверки памяти Windows».
- Использовать поиск в панели задач Windows 10, начав вводить «Средство проверки памяти». Или встроенные средства поиска в предыдущих версиях ОС.
- Вручную запустить файл C:\Windows\System32\MdSched.exe
Если же ситуация осложняется тем, что Windows не запускается, вход в неё невозможен, либо сразу после него происходят сбои, можно использовать следующие способы запуска средства диагностики оперативной памяти:
- Загрузить компьютер или ноутбук с загрузочной флешки с Windows 10 или другой версией Windows, можно и с загрузочного диска. На экране программы установки нажать клавиши Shift+F10 (Shift+Fn+F10 на некоторых ноутбуках), ввести mdsexe в открывшейся командной строке и нажать Enter. После выбора в утилите проверки пункта «Выполнить перезагрузку и проверку», загружайте компьютер не с флешки, а с обычного загрузочного HDD или SSD.
- Средство проверки памяти можно запустить из среды восстановления Windows 10 — нажав кнопку «Дополнительные параметры» на синем экране с ошибкой или, находясь на экране блокировки Windows 10 (с выбором имени пользователя) нажать по изображенной справа внизу кнопке «Питания», а затем, удерживая Shift, нажать «Перезагрузка». В среде восстановления выбираем «Поиск и устранение неисправностей» — «Дополнительные параметры» — «Командная строка». А в ней, как и в предыдущем случае используем команду mdsched.exe.
- Если у вас есть подготовленный диск восстановления Windows, запуск можно осуществить, загрузившись с него.
Использование средства проверки памяти Windows и просмотр результатов
После запуска средства проверки памяти вам будет предложено перезагрузить компьютер, после согласия, процесс будет выглядеть следующим образом:
- Начнётся проверка оперативной памяти, которая может занять продолжительное время. Может показаться, что средство диагностики зависло: на всякий случай подождите в такой ситуации 5-10 минут. Если же действительно произошло зависание, не исключено что есть проблемы с оборудованием, вероятно — с оперативной памятью, но не обязательно.
- Если в ходе проверки нажать клавишу F1 (или Fn+F1, если F1 не срабатывает), вы попадёте в настройки средства диагностики памяти Windows. Здесь можно выбрать набор тестов (по умолчанию — обычный), использование кэша, и число проходов. Переключение между разделами настроек выполняется клавишей Tab, изменение параметров — стрелками и вводом цифр (для числа проходов), применение параметров — клавишей F10. После изменения настроек тест перезапускается.
- В ходе проверки вы будете видеть информацию вида «Неполадки пока не обнаружены» или «Были обнаружены проблемы оборудования».
После завершения проверки компьютер будет автоматически перезагружен. Дальнейшие шаги — просмотр результатов.
- После перезагрузки в случае Windows 10 вы можете увидеть уведомление в области уведомлений, сообщающее о результате проверки памяти. Но оно отображается не всегда.
- Можно зайти в просмотр событий, для этого нажимаем Win+R, вводим eventvwr.msc и нажимаем Enter. Там открываем раздел «Журналы Windows» — «Система», находим пункты, где в столбце «Источник» указано MemoryDiagnostics-Results и просматриваем результаты.
Учитывайте, что ошибки, «вылеты», синие экраны и зависания не всегда связаны с проблемами оперативной памяти: если средство диагностики показывает, что всё в порядке, есть и иные возможные причины: отключенный файл подкачки, проблемы с HDD или SSD (или с их подключением, например — неисправный кабель), сторонние антивирусы или, наоборот, вредоносные программы, неправильная работа драйверов оборудования.
Что делать, если были обнаружены проблемы оборудования в средстве диагностики памяти
К сожалению, средство диагностики не сообщает о том, какие именно проблемы были обнаружены в ходе проверки, а лишь рекомендует обратиться к производителю оборудования. Что можно сделать:
- Отключить любые опции ускорения памяти (изменение частоты, таймингов и другие) при наличии соответствующих опций в БИОС или ПО производителя материнской платы или ноутбука.
- Попробовать проверить планки памяти по одной, в других слотах на материнской плате для того, чтобы выяснить, появляются ли проблемы только с одним конкретным модулем памяти или в одном конкретном разъеме.
- Использовать другие утилиты для проверки оперативной памяти при необходимости.
- Прочитать документацию к материнской плате ПК — возможно, это какая-то несовместимость с памятью с конкретными характеристиками (если вы недавно добавили новые модули памяти или только что самостоятельно собрали компьютер).
- Иногда может помочь обновление БИОС.
Видео инструкция
Если вы разобрались, чем была вызвана именно ваша проблема, буду благодарен комментарию к статье: возможно, для кого-то он окажется полезным.
В этой статье рассмотрим несколько программ, способных проанализировать ОЗУ и выявить сбойные планки.
GoldMemory
GoldMemory – программа, поставляемая в виде загрузочного образа с дистрибутивом. Работает без участия операционной системы при загрузке с диска или другого носителя.
Софт включает несколько режимов проверки памяти, умеет тестировать производительность, сохраняет данные проверки в специальный файл на жестком диске.
MemTest86
Еще одна утилита, которая распространяется уже записанной в образ и работает без загрузки ОС. Позволяет выбирать варианты тестов, отображает информацию об объеме кэша процессора и памяти. Основное отличие от GoldMemory – нет возможности сохранить историю тестов для последующего анализа.
MemTest86+
Windows Memory Diagnostic Utility
Очередной представитель консольных утилит, работающих без участия операционной системы. Разработанная корпорацией Microsoft, Windows Memory Diagnostic Utility является одним из наиболее эффективных решений для выявления ошибок в оперативной памяти и гарантированно совместима с Windows 7, а также более новыми и старыми системами от MS.
RightMark Memory Analyzer
Данный софт уже имеет собственный графический интерфейс и работает под Windows. Основной отличительной чертой RightMark Memory Analyzer является настройка приоритета, что дает возможность осуществлять проверку ОЗУ без нагрузки на систему.
MEMTEST
Очень маленькая программка. В бесплатной версии умеет только проверять указанный объем памяти. В платных же редакциях имеет расширенные функции по отображению информации, а также возможность создания загрузочного носителя.
MemTach
MemTach – софт для тестирования памяти профессионального уровня. Проводит множество тестов производительности ОЗУ в различных операциях. В силу некоторых особенностей не подходит рядовому пользователю, поскольку назначение некоторых тестов известно только специалистам или продвинутым юзерам.
SuperRam
Данная программа является многофункциональной. В ее состав входят модуль тестирования быстродействия оперативной памяти и монитор ресурсов. Основная функция SuperRam – оптимизация ОЗУ. Софт в реальном времени сканирует память и высвобождает объем, не используемый в данный момент процессором. В настройках можно выставить границы, при которых будет включаться эта опция.
Ошибки в оперативной памяти могут и должны вызывать неполадки в работе операционной системы и компьютера в целом. Если возникло подозрение, что причиной сбоев является ОЗУ, то необходимо произвести тестирование с помощью одной из программ, приведенных выше. В случае обнаружения ошибок, как это ни печально, придется заменить неисправные модули.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Доброго времени суток.
Довольно часто при нестабильном поведении компьютера/ноутбука (например, стали появляться ошибки, зависания, вылетает синий экран, есть искажения изображения и пр.) , требуется провести проверку оперативной памяти ОЗУ (RAM).
В ходе этого тестирования можно выяснить, все ли в порядке с памятью, нет ли ошибок, не требуется ли замена плашки (кстати, протестировать ОЗУ может быть не лишним и при покупке новой планки) .
Вообще, привести диагностику памяти можно разными путями:
- использовать средства диагностики Windows (если у вас ОС Windows 7, 8.1, 10);
- либо использовать сторонний софт (на мой взгляд одна из лучших утилит для такого теста — Memtest 86+) .
В этой статье рассмотрю оба эти варианта (вообще, конечно, второй вариант более предпочтителен!).
Проверка ОЗУ (RAM) на ошибки
Средство диагностики памяти Windows
Вообще, лично на мой взгляд, встроенный софт в Windows, как правило, уступает софту стороннего разработчика. Поэтому, все же, если у вас есть свободная флешка (CD/DVD диск), я рекомендую воспользоваться тестом в программе Memtest 86+ (см. во второй части статьи) .
И тем не менее, как запустить проверку планок ОЗУ в Windows (актуально для Windows 7, 8, 10) :
- нажать сочетание кнопок Win+R ;
- в появившемся окне "Выполнить" ввести команду mdsched и нажать Enter (как на скрине ниже) .
mdsched — команда для проверки ОЗУ (Win+R)
Далее должно появиться окно, в котором вам предложат на выбор два варианта проверки:
Средство проверки памяти Windows
Тест памяти запланирован
После перезагрузки компьютера/ноутбука увидите окно, как на фото ниже. Будет выполнено 2 прохода, в нижней части окна показывается состояние операции. Если с вашей памятью все хорошо — то состояние будет в статусе "Неполадки пока не обнаружены".
Средство диагностики памяти Windows
Если будут найдены неполадки
Рекомендую прогнать еще раз утилитой Memtest 86+. Если ошибки подтвердятся и в этой утилите — то см. конец этой статьи, там привел несколько советов.
Тестирование оперативной памяти в Memtest 86+
Memtest 86+
Memtest 86+ — одна из лучших утилит, предназначенных для тестирования оперативной памяти. Утилита может запускаться с помощью собственного загрузчика, поэтому для нее операционная система, в принципе, не нужна.
Программа поддерживает современные многоядерные процессоры, большинство чипсетов материнских плат. Memtest 86+ доступна для скачивания на официальном сайте (ссылка выше), в виде нескольких версий. О них пару слов ниже.
Про версии программы Memtest 86+ (V5.01):
- Download - Pre-Compiled Bootable ISO (.gz) — программа распространяется в образе ISO. Такой образ можно записать хоть на флешку, хоть на обычный CD/DVD диск (правда, могут понадобиться доп. утилиты - например, UltraISO) . В общем, универсальный вариант;
- Download - Pre-Compiled Bootable ISO (.zip) — тоже самое, только формат архива другой;
- Download - Pre-Compiled Bootable Binary (.gz) — файл в формате bin (это тоже образ диска, похож на ISO);
- Download - Pre-Compiled Bootable Binary (.zip) - тоже самое;
- Download - Auto-installer for USB Key (Win 9x/2k/xp/7) *NEW!* — самый востребованный вариант (на мой взгляд). Позволяет автоматически создать загрузочную флешку с Memtest 86+ за несколько шагов. Программа работает во всех версиях Windows: XP, 7, 8, 10;
- Download - Pre-Compiled package for Floppy (DOS - Win) — создание загрузочной дискеты (на мой взгляд, сегодня практически не актуально).
Я выбрал 5-й вариант (Download - Auto-installer for USB Key (Win 9x/2k/xp/7) *NEW!*), именно при помощи нее и покажу как создать флешку.
Создание загрузочной флешки с Memtest86+
Скачиваете архив, разархивируете его и запускаете файл программы (выбор версии — приведен выше) . Далее нужно вставить флешку в USB-порт и:
Создание загрузочной флешки в Memtest 86+
Загрузка с флешки и запуск теста в Memtest 86+
Чтобы загрузиться с созданной шагом ранее флешки, необходимо соответствующим образом настроить BIOS (либо воспользоваться кнопкой для вызова Boot Menu) . Тема эта достаточно обширна, поэтому чуть ниже приведу ссылки на свои статьи.
Я воспользовался вызовом Boot Menu, указал с чего загружаться (USB-флешки) и нажал Enter (скрин ниже).
Загрузка с USB-флешки
Далее, если ваша флешка правильно записана, утилита Memtest 86+ автоматически запуститься и начнет тестировать оперативную память. От вас ничего не требуется нажимать. Красной стрелкой на фото ниже показан ход тестирования (сколько процентов проверено).
Тестирование в Memtest 86+ // запускается автоматически
Примечание! На всякий случай приведу клавиши управления (хотя они в большинстве случаев не нужны).
Esc – закрыть программу и перезагрузить ПК;
C – задание параметров в ручном режиме (для опытных пользователей);
F1 — Enhanced Fail Safe Mode (расширенная Fail Safe Mode).
F2 — Experimental SMT support up to 32 cores (экспериментальная SMT поддержка до 32 ядер).
При запуске производится анализ компонентов компьютера, затем начинается тестирование оперативной памяти.
Если тест не запускается в авто-режиме — запустите его при помои кнопок F1, либо F2.
Примечание!
Memtest 86+ записывает в каждый блок памяти информацию, а затем считывает её и проверяет на ошибки. Программа тестирует оперативную память циклически, т.е. у неё по умолчанию есть 11 тестов (включая нулевой), которые она гоняет по кругу неограниченное число раз (пока вы не остановите ее, нажав клавишу Esc) .
Все хорошо с памятью // прошла тест
Если же в процессе тестирования будут найдены ошибки — вы увидите красные строки (это в любом случае не хорошо (как минимум) ).
С памятью есть проблемы.
Что делать, если были найдены ошибки
Довольно популярный вопрос, наряду с вопросами по тестированию памяти.
Для начала необходимо открыть системный блок и почистить его от пыли. Вынуть планки памяти из слотов и продуть сами слоты (удобно это делать с помощью пылесоса с реверсным режимом, либо баллончика сжатого воздуха — такие продаются в компьютерных магазинах) .
Далее проверьте сами планки: нет ли на них сколов, царапин, чистые ли они. Если есть признаки механического повреждения, то наверняка потребуется замена памяти на новую.
Так же обратите внимание на контакты . Дело в том, что через некоторое время они могут окислиться, и при вставке в слот не полностью (не всегда) давать контакт. В результате, как только контакт "потерялся" — у вас завис компьютер. Рекомендую их почистить в любом случае, для этого подойдет обычная резинка/стёрка (школьная) . Оставшиеся катышки — можно либо сдуть, либо смахнуть мягкой кисточкой.
Чистка контактов памяти резинкой и кисточкой
Примечание. Процедуру нужно проводить крайне аккуратно, на чистой, сухой, ровной поверхности. Резинка лучше та, у которой две стороны: одна синяя, другая розовая. Тереть рекомендуется синей. В некоторых случаях, желтые контакты меняют цвет на более светлый.
После чистки памяти, вставьте ее вновь в слот и включите ПК (кстати, попробуйте вставить память в другие слоты, или поменять планки местами, если у вас все слоты заняты).
Далее проведите тестирование еще раз. В некоторых случаях, такая простая процедура, позволяет избавиться от ошибок, связанных с памятью, компьютер перестает зависать, перезагружаться и выдавать синий экран (тем самым, экономя ваши средства).
Если будут вновь найдены ошибки — можно попробовать сдать память в ремонт (но лично я не рекомендую). Если нет гарантийного обслуживания - лучше замените на новую (дело в том, что цена ремонта ОЗУ - во многих случаях, стоит практически столько же, сколько новая планка).
Читайте также: