Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
АндрюхаРостовск
6 / 6 / 2
Регистрация: 03.04.2013
Сообщений: 147
#1

Работа с оперативной памятью - C++

07.09.2015, 00:56. Просмотров 418. Ответов 8
Метки нет (Все метки)

Доброго дня. Есть интересная задача. Планируется создание чего-то типа сканера оперативной памяти. Необходимо сделать его работающим из под Windows и, желательно, без работы из под DOS. Появилась мысль о последовательном сканировании всего пространства - получаем размер памяти, определяем свободные сегменты, сканируем их, затем внося изменения в таблицы GDT и LDT переносим содержимое с одних страниц на другие и сканируем освободившиеся сегменты. Имея максимальный приоритет для программы, как я понял, я могу получить доступ к таблицам адресации памяти. Но вот вопрос о таблицах прерываний и младших областях памяти, отведенных ОС под свои нужды. Пустит ли меня туда Windows? Кто в курсе, подскажите, имеет смысл с этим заморачиваться, или проект в таком виде не реализуем?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2015, 00:56     Работа с оперативной памятью
Посмотрите здесь:

работа с оперативной памятью - Visual C++
доброго времени суток пытаюсь написать программу. упёрся в работу с оперативкой. есть файл произвольного размера(от 1ГБ), в нем...

Работа с оперативной памятью. Отследить куда считываются значения - C++ Builder
Здравствуйте. Занимаюсь разработкой дополнения для своей любимой видеоигры. В папке с игрой есть текстовый файл файл там хранятся параметры...

Создание второго процесса с общей оперативной памятью первого - C++ Builder
Может кто-нибудь простой пример написать, чтоб можно было разобраться? (под виндоус) Например: запускается процесс, создается символьная...

работа с памятью - C++
Доброго времени суток! У меня возникло затруднение - нужно реализовать на языке Си программу,демонстрирующую распределение памяти таким...

Работа с памятью - C++
Всем привет! Не могу разобраться, как написать код программы, которая моделирует механизм виртуальной памяти. Кто сможет реализовать хотя...

Работа с памятью - C++
Нужно ривести пример использования операторов new и delete для выделения памяти под двумерный массив и освобождения памяти двумерного...

Работа с памятью - C++
Может кто хорошо понимает механизм выделения и освобождения памяти объяснить его, а то я в конец запутался с ним, вот помогал одному...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
catr
8 / 8 / 2
Регистрация: 27.11.2013
Сообщений: 61
08.09.2015, 09:43     Работа с оперативной памятью #2
То, что ты написал не умеет смысла. Поэтому проект в таком виде не реализуем.
Почтальон
Модератор
347 / 269 / 47
Регистрация: 22.03.2015
Сообщений: 2,080
Завершенные тесты: 1
08.09.2015, 14:59     Работа с оперативной памятью #3
И что вы хотите выудить из оперативы ?
АндрюхаРостовск
6 / 6 / 2
Регистрация: 03.04.2013
Сообщений: 147
08.09.2015, 18:22  [ТС]     Работа с оперативной памятью #4
Самое простое - проверка запись/чтение в ячейки памяти - записали контрольную последовательность, считали, сравнили с эталоном, совпадает - все работает, не совпадает - где-то бида. Как-то так. Вопрос только реализуемо ли это в принципе во всех областях памяти при работе из под ОС, без создания загрузочного диска и работы из под BIOS как это делает например Memtest86.
hoggy
6369 / 2587 / 452
Регистрация: 15.11.2014
Сообщений: 5,723
Завершенные тесты: 1
08.09.2015, 23:28     Работа с оперативной памятью #5
Цитата Сообщение от АндрюхаРостовск Посмотреть сообщение
имеет смысл с этим заморачиваться, или проект в таком виде не реализуем?
не имеет.
АндрюхаРостовск
6 / 6 / 2
Регистрация: 03.04.2013
Сообщений: 147
09.09.2015, 19:05  [ТС]     Работа с оперативной памятью #6
Цитата Сообщение от hoggy Посмотреть сообщение
не имеет.
А не поясните, почему? Не возможно в принципе из-за ограничений Windows, слишком сложная и трудоемкая организация, или может все уже придумано до нас? Может еще какая причина?
hoggy
6369 / 2587 / 452
Регистрация: 15.11.2014
Сообщений: 5,723
Завершенные тесты: 1
09.09.2015, 19:18     Работа с оперативной памятью #7
Цитата Сообщение от АндрюхаРостовск Посмотреть сообщение
А не поясните, почему?
потому что почитайте Рихтера.

а если вкратце:
каждый процесс существует в рамках собственного адрессного пространства
так называемой виртуальной памяти,
за пределы которого он выйти не сможет.


"виртуальная" память специально и была созданна для того,
что бы один процесс не мог спокойно шляццо по "оперативной памяти",
и подкручивать ей гайки.
АндрюхаРостовск
6 / 6 / 2
Регистрация: 03.04.2013
Сообщений: 147
09.09.2015, 19:43  [ТС]     Работа с оперативной памятью #8
Цитата Сообщение от hoggy Посмотреть сообщение
каждый процесс существует в рамках собственного адрессного пространства
так называемой виртуальной памяти,
за пределы которого он выйти не сможет.
Это то я знаю. И именно это ограничение и интересно обойти.
Допустим, создаем драйвер, инсталлируем его в ядро, получая таким образом доступ к процессам на уровне 0 кольца безопасности ОС. После чего начинаем работать напрямую с ОЗУ, потихонечку сканируя ее от конца к началу. В верхних областях особых проблем быть не должно, пользовательские процессы можно и на диск ненадолго выгрузить. А вот в областях отведенных ОС под GDT, LDT, вектора прерываний и прочие сервисные таблицы конечно начнется веселье. Система безопасности Windows, тот же Kernel Patch Protection очень неодобрительно на это посмотрит. Вот я и решил спросить у более опытных людей, возможно ли это в принципе. Хотя, каак я потихонечку понимаю, подобная программма получится подозрительно похожей на руткит или вирус.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2015, 08:56     Работа с оперативной памятью
Еще ссылки по теме:

Работа с памятью - C++
Добрый день всем. Я только начал изучение C#(раньше работал c: C++ маленько -т.е. общее представление о нем имею) и у меня вопрос, можно...

работа с памятью - C++
a) Статическая память. Двумерный массив. Дан массив целых чисел. В массиве есть отрицательные числа. Определить координаты левого нижнего...

Работа с памятью - C++ Linux
в Windows есть команды работы с памятью HeapAlloc HeapReAlloc HeapSize HeapFree HeapDestroy HeapCreate(выделяют кучу(н-бфйт),выделяют в...

Работа с памятью - C++
Есть приложение,в нем есть label'ы. Есть ли какая-нибудь возможность средствами C++ допустим, перевести эти контролы? Если есть - дайте...

Работа с памятью - C++
Всем доброго времени суток. Почитав данный форум и проч. пришёл к выводу, что мой проект на C# нереален в виду бестолковой работы с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Почтальон
10.09.2015, 08:56     Работа с оперативной памятью
  #9

Не по теме:

Да, любой антивирь будет пищать

Yandex
Объявления
10.09.2015, 08:56     Работа с оперативной памятью
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru