|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.07.2013, 12:32 | #1 |
Форумчанин
Регистрация: 23.03.2013
Сообщений: 218
|
Работа с памятью своего процесса
Здравствуйте. Есть желание поработать с памятью своего процесса.
В приведённом ниже коде я хочу получить блок памяти в переменную array of byte, но получаю run time error Код:
Что я делаю не правильно? Заранее благодарен |
01.07.2013, 15:22 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
у вы уверены что ваш регион вам доступен и доступен для записи?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
01.07.2013, 15:33 | #3 |
Форумчанин
Регистрация: 23.03.2013
Сообщений: 218
|
Но ведь я могу читать память своего процесса?
move(lpBuffer.BaseAddress,Buf,lpBuf fer.RegionSize); Тут я пытаюсь скопировать lpBuffer.RegionSize байт в массив Buf начиная с адреса lpBuffer.BaseAddress, или чтото путаю? |
01.07.2013, 15:44 | #4 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
если страница не зарезервированна и не произведено выделение ей памяти, то будет AV. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
01.07.2013, 16:22 | #5 | |
Форумчанин
Регистрация: 23.03.2013
Сообщений: 218
|
Цитата:
lpBuffer.BaseAddress - сюда значение записала VirtualAlloc lpBuffer.RegionSize - и сюда размер она же записала Подскажите пожалуйста алгоритм действий, а то я чтото совсем запутался. Моя конечная цель - изменение памяти моего же процесса. Т.е. например есть функция Код:
По какому алгоритму стоит действовать? Последний раз редактировалось lollollollol; 01.07.2013 в 16:26. |
|
01.07.2013, 17:06 | #6 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
в вашем случае проще текст вынести в константу, и её адрес уже можно легко получить. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
01.07.2013, 18:09 | #7 |
Форумчанин
Регистрация: 23.03.2013
Сообщений: 218
|
Невнимательность, сейчас буду исправляться
|
01.07.2013, 18:11 | #8 | |
Форумчанин
Регистрация: 23.03.2013
Сообщений: 218
|
Цитата:
|
|
01.07.2013, 19:07 | #9 |
Форумчанин
Регистрация: 23.03.2013
Сообщений: 218
|
Вот смотри, пытаюсь изсенить значение, код отрабатывает без ошибок, но и результата нет. сообщение не меняется.
А выносить в константу не вариант. Это просто как пример для обучения. Код:
if (Pos(Testsss+'oa1',r)<>0) then begin r:=ReplaceSub(r,Testsss+'oa1','eeee '); Сделал через Testsss так как подумал что прога может поменять значение которое будет искать Временно сделал вместо move OpenProcess, с OpenProcess работает без ошибок, а вот move run time error создаёт. С этим разберусь чуть позже, вначале хочу понять почему сообщение отображается без внесённых изменений Последний раз редактировалось lollollollol; 01.07.2013 в 19:21. |
01.07.2013, 19:21 | #10 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
нужны лишь указатели. меня прет другое, куда вы пишете? куда то наугад, надо искать именно нужное значение сначала, лишь потом менять. причем тут более нужно именно разбирать в отладчике. что откуда берется и тп. а свое приложение менять проще создавая мап файл, где будут все адреса(поидее все). Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi XE2 работа с памятью процесса | YCA4 | Win Api | 2 | 18.02.2012 19:26 |
Работа с памятью | mufesto | Win Api | 1 | 30.01.2012 15:13 |
Смертоубийство своего процесса | Johnson | Win Api | 7 | 23.08.2011 19:29 |
Работа с памятью процесса | JRcoker | Win Api | 10 | 18.07.2009 22:22 |
Работа с памятью запущенного процесса | DeniCPP | Общие вопросы C/C++ | 2 | 09.04.2009 12:38 |