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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
evgem
0 / 0 / 0
Регистрация: 16.10.2009
Сообщений: 10
#1

Прочитать память по заданному адресу. - C++

05.11.2009, 21:40. Просмотров 1297. Ответов 3
Метки нет (Все метки)

Надо написать программу на С в Linux, которая находит в памяти другую программу и читает её содержимое. На ассемблере в DOS я это делал. А как здесь?.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2009, 21:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прочитать память по заданному адресу. (C++):

Прочитать из памяти по адресу - C++
Задача: в памяти по адресу 0040:0010h (0x00400010) записано слово (информация о подключенном оборудовании). Нужно прочитать 12-й бит этого...

Можно ли записывать объекты класса string в память, чтоб потом их прочитать? - C++
Создал класс, который содержит много объектов класса string, но что то не так как надо. В debug режиме удаётся прочитать и вывести, но...

Необработанное исключение по адресу, нарушение прав доступа при записи по адресу - C++
вот само задание: Авиарейсы (номер рейса, пункт назначения, время вылета, дата вылета, стоимость билета, количество мест). Выбор по дате...

Исправить ошибку: необработанное исключение по адресу, нарушение прав доступа при записи по адресу - C++
Помогите, пожалуйста, исправит ошибку. Необработанное исключение по адресу 0x77D88E19 (ntdll.dll) в Lab11.exe: 0xC0000005: нарушение...

Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу - C++
#include <math.h> const double eps = 0.001; ///< желаемая точность /// N - размерность матрицы; A - матрица коэффициентов, F -...

Необработанное исключение по адресу 0x00ED4891 в strings.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCCCCCCCC - C++
Программа толком не написан, проверял ранд и возникли проблемы. Ф-ция ранд генерирует одно и тоже число, но если убрать srand(time(0));,...

3
kravam
быдлокодер
1700 / 887 / 45
Регистрация: 04.06.2008
Сообщений: 5,493
06.11.2009, 04:15 #2
Linux не Linux...
Если прога загружена, то перечисляй все процессы в системе, находи нужный. Потом находи его базовый адрес и размер. Потом делай дамп этого участка памяти. Это в винде. В Linux алгоритм, наверное, тот же. А вот конкретнее по Linux ничё сказать не могу...
Про винду могу чё-нить поразмышлять вслух, если заинтересуешься.
0
evgem
0 / 0 / 0
Регистрация: 16.10.2009
Сообщений: 10
06.11.2009, 18:06  [ТС] #3
Спасибо за совет. А какими средствами в винде перечислить процессы и потом найти базовый адрес и размер, а также снять дамп?
0
kravam
быдлокодер
1700 / 887 / 45
Регистрация: 04.06.2008
Сообщений: 5,493
06.11.2009, 18:47 #4
Гугли.
Вот для почина тебе как перечислить все процессы в системе
А необходимый ищешь по имени (получаешь PID прцесса)

Потом возможны вариации. Я бы попробовал что попроще:

1) Нашёл полный путь к имени процесса

2) Загрузил этот процесс в память МОЕГО процесса с помощью API-функции :
C++
1
LoadLibrary ("C:\\...ima_modula");
3) Эта функия вернёт адрес в памяти МОЕГО процесса, куда будет загружен нужный процесс (ну, то есть он исполняется в системе сам по себе и ещё один его экземляр просто загружен в память МОЕГО процесса.) Какая часть процесса будет находиться по адресу, возвращённому LoadLibrary?
Заголовок PE-файла

4) Вот анализируй PE-заголовок, набраешь в google "От зелёного к красному", идёшь туда и читаешь ВТОРУЮ часть. Ссылку не даю, ибо там вирусный ресурс, меня забанят. Там бояться не надо, ничё страшного.
В заголовке тебе необходимо найти: адрес, по которому ПРЕДПОЧТИТЕЛЬНО загружается процесс и его размер. Ну, там разберёшься.

5) Этих двух данных хватит, чобы сделать снимок нужного участка памяти необходимого процесса.
Да, ещё хэндл нужено будет. Ну, это ерунда. Находится на раз.
...То есть ситуация такая на данный момент будет: имеешь процесс, снимок которого можешь сделать и имеешь дубликат процесса (этот загружен в твою собственную память)

Хочешь,то дампируй, хочешь, это.
Я бы попробовал дампровать оригинал, конечно же.
Ну, смотря какой сложности процесс. Если он изменяется (патчится) в прроцессе работы и загрузки и тебе адо все эти изменения увидеть, тогда оригинал дампируй, а если он простенький и не патчится, тогда дубликат дампируй.

Хотя таблица импорта патчится или нет независимо от его сложности. Но нужна ли на тебе? Что она из себя предсавляет найдёшь в "От зелёного к красному"

6) Если процесс загрузился не по своему родному адресу, сам думай, чё делать.
0
06.11.2009, 18:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2009, 18:47
Привет! Вот еще темы с ответами:

Необработанное исключение по адресу 0x00105FD7 в Динамические структуры: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCDCDCE09 - C++
Необработанное исключение по адресу 0x00105FD7 в Динамические структуры.exe: 0xC0000005: нарушение прав доступа при чтении по адресу...

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

инструкция по адресу 0x7c91ac4a обратилась к памяти по адресу 0x00000010.Память не может быть written - C++ Builder
Помогите разобраться пожалуйста!!!!! С:/rsit info.txt logfile of random's system information tool 1.06 2010-05-27 22:37:54 ...

Инструкция по адресу “0x490e355” обратилась к памяти по адресу “0x065ea847” память не может быть “written” - Windows 8, 8.1
Здравствуйте, при загрузки картинки в хроме появляется такая ошибка и хром дохнет, также это наблюдается в других браузерах когда нажимаешь...


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

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

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