Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,529
#1

Как прочитать содержимое памяти ПК? - C++

10.05.2016, 22:14. Просмотров 692. Ответов 18
Метки нет (Все метки)

Я так понимаю речь об ОЗУ.
1)Как при помощи простейшего консольного приложения узнать к-во ячеек памяти(это размер или адреса)
2)как прочитать их содержимое
3)как записать в содержимое ячейки памяти свои данные
4)как узнать куда можна п3 записывать
5)прошу пример для VS C++
http://www.cyberforum.ru/cpp-beginners/thread2237078.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2016, 22:14
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как прочитать содержимое памяти ПК? (C++):

Как из файла прочитать размерность матрицы и её содержимое?
Помогите пожалуйста, ничего не нашёл! Как из файла прочитать размерность...

Как по ссылке прочитать ячейки памяти в turbo debugger c++ 3.0
Выполняя код на с++ программа собирается считать дамп памяти и что то с ним...

Прочитать из памяти по адресу
Задача: в памяти по адресу 0040:0010h (0x00400010) записано слово (информация о...

Не могу прочитать данные ячейки памяти
Подскажите пожалуйста что не так. Адресс ячейки вычислил через артмани. Код...

Bin файл из Modbus. Прочитать из файла область памяти
Доброго времени суток! Подскажите пожалуйста, у меня есть bin-файл из...

18
nmcf
6238 / 5550 / 2526
Регистрация: 14.04.2014
Сообщений: 23,338
10.05.2016, 22:19 #2
Количество ячеек в чём?
0
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,529
10.05.2016, 22:51  [ТС] #3
к-во ячеек памяти ОЗУ
0
nmcf
6238 / 5550 / 2526
Регистрация: 14.04.2014
Сообщений: 23,338
10.05.2016, 22:58 #4
Сомнительно, что это можно простейшим способом сделать. WinAPI надо задействовать.
0
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,529
10.05.2016, 23:01  [ТС] #5
можно пример
0
nmcf
6238 / 5550 / 2526
Регистрация: 14.04.2014
Сообщений: 23,338
10.05.2016, 23:07 #6
Как-то так:
C++
1
2
3
MEMORYSTATUS ms;
GlobalMemoryStatus(&ms);
cout << "Всего памяти: " << ms.dwTotalPhys << endl;
0
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,529
10.05.2016, 23:13  [ТС] #7
какой заголовочный файл/лы подключить?

Добавлено через 56 секунд
Как узнать сколько памяти компьютер выделил под запуск нашей консольки?В каком адресном пространстве начало и коец?
0
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,529
10.05.2016, 23:22  [ТС] #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
#include <WinBase.h>
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    MEMORYSTATUS ms;
    setlocale(LC_ALL, "rus");
    GlobalMemoryStatus(&ms);
    cout << "Всего памяти: " << ms.dwTotalPhys << endl;
    system("pause");
    return 0;
}
Компилятор выдает 230 ошибок
Как прочитать содержимое памяти ПК?

Как прочитать содержимое памяти ПК?
0
nmcf
6238 / 5550 / 2526
Регистрация: 14.04.2014
Сообщений: 23,338
10.05.2016, 23:24 #9
windows.h
0
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,529
10.05.2016, 23:32  [ТС] #10
заменил
C++
1
#include <WinBase.h>
на
C++
1
windows.h
Как прочитать содержимое памяти ПК?
Только у меня на ноутбуке Aspire E1531g
должно быть 6 GB.
Так что за цифра вывела на консоли,а именно 4,29GB?
Как узнать сколько памяти компьютер выделил под запуск нашей консольки?В каком адресном пространстве начало и конец?Как прочитать содержимое например 1000 го байта ОЗУ?
0
nmcf
6238 / 5550 / 2526
Регистрация: 14.04.2014
Сообщений: 23,338
10.05.2016, 23:37 #11
Лучший ответ Сообщение было отмечено scherbakovss201 как решение

Решение

Функция древняя оказалась. Вот так делай:
C++
1
2
3
4
    MEMORYSTATUSEX ms;
    ms.dwLength = sizeof(ms);
    GlobalMemoryStatusEx(&ms);
    cout << "Всего памяти: " << ms.ullTotalPhys << endl;
1
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,529
10.05.2016, 23:40  [ТС] #12
Как прочитать содержимое памяти ПК?
вот теперь результат ближе к правде.
0
nmcf
10.05.2016, 23:41
  #13

Не по теме:

Хорошо живёшь. 6 Гб на ноутбуке.

0
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,529
10.05.2016, 23:42  [ТС] #14
Ответ на один из вопросов получен.
Как теперь сделать доступ к ячейкам как массиву?
0
nmcf
6238 / 5550 / 2526
Регистрация: 14.04.2014
Сообщений: 23,338
10.05.2016, 23:44 #15
К каким ячейкам? Ты можешь пользоваться только памятью выделенной приложению. Ну а вообще через указатель.
0
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,529
10.05.2016, 23:46  [ТС] #16
Я не знаю сколько байт занимает мое приложение в ОЗУ.Где начало(адрес),а где конец(адрес) выделенной памяти под приложение.
0
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,529
11.05.2016, 00:09  [ТС] #17
Как прочитать содержимое памяти ПК?
Ошибка 1 error C4700: использована неинициализированная локальная переменная "mbi" c:\users\sergey\documents\visual studio 2013\projects\consoleapplication26\consoleapplication26\consoleapplication26.cpp 24 1 ConsoleApplication26

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// ConsoleApplication26.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "rus");
    MEMORYSTATUSEX ms;
    _MEMORY_BASIC_INFORMATION mbi;
    ms.dwLength = sizeof(ms);
    GlobalMemoryStatusEx(&ms);
    cout << "   MEMORYSTATUSEX: " << endl;
    cout << "Всего памяти: " << ms.ullTotalPhys << endl;
    cout << "dwLength: " << ms.dwLength << endl;
    cout << "ullAvailVirtual: " << ms.ullAvailVirtual << endl;
    cout << "dwMemoryLoad: " << ms.dwMemoryLoad << endl;
    cout << "ullAvailExtendedVirtual: " << ms.ullAvailExtendedVirtual << endl;
    cout << "ullAvailPageFile: " << ms.ullAvailPageFile << endl;
    cout << "ullAvailPhys: " << ms.ullAvailPhys << endl;
    cout << "ullTotalPageFile: " << ms.ullTotalPageFile << endl;
    cout << "ullTotalPhys: " << ms.ullTotalPhys << endl;
    cout << "   _MEMORY_BASIC_INFORMATION: " << endl;
    cout << "AllocationBase: " << mbi.AllocationBase << endl;
    cout << "AllocationProtect: " << mbi.AllocationProtect << endl;
    cout << "Protect: " << mbi.Protect << endl;
    cout << "RegionSize: " << mbi.RegionSize << endl;
    cout << "State: " << mbi.State << endl;
    cout << "Type: " << mbi.Type << endl;
    cout << "BaseAddress: " << mbi.BaseAddress << endl;
    system("pause");
    return 0;
}
0
Renji
2127 / 1486 / 453
Регистрация: 05.06.2014
Сообщений: 4,326
11.05.2016, 05:12 #18
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
Как теперь сделать доступ к ячейкам как массиву?
Если под ячейками имеется ввиду физическая память, то либо поставив Dos, либо написав свою крутую Рак-ОС. "Рак" в данном случае поза в которой эту ОС будут иметь написанные под нее программы.

Под современными ОС приложение работает с виртуальными адресами, которые могут отображаться на физическую память, диск или вообще в никуда. А прямого доступа к физической памяти никто не даст по соображениям безопасности. Иначе это будет Рак-ОС.
Если же вам нужно именно по виртуальным адресам побегать, ну char*array=nullptr; и потом array[1234]. Плюс, поковыряться в Гугле на предмет "какие виртуальные адреса ведут в никуда".

Добавлено через 1 минуту
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
Я не знаю сколько байт занимает мое приложение в ОЗУ
Переменное число байт, ибо виртуальная память позволяет часть приложения выкинуть в своп (на диск). Причем, не спрашивая мнения самого приложения.
2
nmcf
6238 / 5550 / 2526
Регистрация: 14.04.2014
Сообщений: 23,338
11.05.2016, 07:43 #19
Здесь почитай про память: http://datadump.ru/process-address-space/
Там картинка есть с адресами.
0
11.05.2016, 07:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2016, 07:43
Привет! Вот еще темы с решениями:

Прочитать файл в обратном порядке т.е. встать в конец файла и прочитать до начальной позиции
подскажите пожалуйста как можно прочитать файл в обратном порядке т.е. стать в...

Как сохранить контейнеры STL в файл. И как потом их прочитать из файла
В Qt такой контейнер как map&lt;T,T&gt; библиотеки STL заносится в файл занесением в...

Как прочитать корневую директорию, как файл в hex-ввиде?
Файл можно открыть так: #include &lt;iostream&gt; #include &lt;cstdio&gt; int...

Как узнать и прочитать файл до того как с ним начнет работать другая программа
Здрувствуйте! Подскажите пожалуйста, как я могу узнать и прочитать файл до...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

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