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

C++

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

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

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

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

Динамические потоки c обрабатываемой памятью - C++
Нужна ваша помощь. #include "WinThread.h" LPVOID hf1,hf2,hf3; iXml* Tr; AnsiString str; std::vector<GraphObj *> *GNO; ...

Управление памятью другой программы - C++
Добрый день. Необходим постоянно устанавливать значение переменной в другой запущенной программе в 0. Ну это понятно, что значение надо...

Литература для работы с памятью процессов - C++
Собственно посоветуйте книжек, чтобы научиться работать с памятью процессов. Спасибо.

Задачка с динамической памятью и вводом из файла - C++
Здраствуйте...Помогите написать любую программу с использованием динамической память и ввода из файла...на c++ версии вроде 3.1 досовский...

Снимок оперативной памяти - C++
Возможно ли на си++ написать консольную программу, которая бы делала снимок ОП, как это делает Snapshot RAM (без интерфейса)?

Данные из оперативной памяти - C++
Подскажите пожалуйста, как нам перехватить данные любого приложения, которые "уходят" в оперативную память. То есть нам надо поймать их до...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
catr
9 / 9 / 2
Регистрация: 27.11.2013
Сообщений: 61
08.09.2015, 09:43 #2
То, что ты написал не умеет смысла. Поэтому проект в таком виде не реализуем.
0
Почтальон
Модератор
373 / 296 / 56
Регистрация: 22.03.2015
Сообщений: 2,319
Завершенные тесты: 1
08.09.2015, 14:59 #3
И что вы хотите выудить из оперативы ?
0
АндрюхаРостовск
8 / 8 / 2
Регистрация: 03.04.2013
Сообщений: 151
08.09.2015, 18:22  [ТС] #4
Самое простое - проверка запись/чтение в ячейки памяти - записали контрольную последовательность, считали, сравнили с эталоном, совпадает - все работает, не совпадает - где-то бида. Как-то так. Вопрос только реализуемо ли это в принципе во всех областях памяти при работе из под ОС, без создания загрузочного диска и работы из под BIOS как это делает например Memtest86.
0
hoggy
Нарушитель
6563 / 2744 / 474
Регистрация: 15.11.2014
Сообщений: 6,084
Завершенные тесты: 1
08.09.2015, 23:28 #5
Цитата Сообщение от АндрюхаРостовск Посмотреть сообщение
имеет смысл с этим заморачиваться, или проект в таком виде не реализуем?
не имеет.
0
АндрюхаРостовск
8 / 8 / 2
Регистрация: 03.04.2013
Сообщений: 151
09.09.2015, 19:05  [ТС] #6
Цитата Сообщение от hoggy Посмотреть сообщение
не имеет.
А не поясните, почему? Не возможно в принципе из-за ограничений Windows, слишком сложная и трудоемкая организация, или может все уже придумано до нас? Может еще какая причина?
0
hoggy
Нарушитель
6563 / 2744 / 474
Регистрация: 15.11.2014
Сообщений: 6,084
Завершенные тесты: 1
09.09.2015, 19:18 #7
Цитата Сообщение от АндрюхаРостовск Посмотреть сообщение
А не поясните, почему?
потому что почитайте Рихтера.

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


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

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2015, 08:56
Привет! Вот еще темы с ответами:

Запустить файл в оперативной памяти - C++
Вобщем озадачили нас на военной кафедре вот как: сказали раз уж мы специалисты по инф. безопасности, то практическая работа, которую мы...

Сбор и анализ данных в оперативной памяти - C++
Подскажите пожалуйста, какие вы знаете способы сбора данных из оперативной памяти(абсолютно любые способы) и соответственно что нить об...

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

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


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

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

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