|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.08.2011, 21:20 | #1 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 273
|
Дамп памяти чужого процесса
Есть определенный процесс, как мне из своей программы сделать что-то типа его дампа? Необходимо это для того чтобы потом в этом дампе произвести поиск определенного флага и если флаг будет найден убить процесс.
|
28.08.2011, 21:44 | #2 | |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
Курить VirtualQueryEx.
Цитата:
|
|
29.08.2011, 01:26 | #3 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 273
|
Что-то не курится =\ понял что VirtualQueryEx юзается вместе с ReadProcessMemory, но никаких примеров найти не выходит, либо плохо ищу =(
|
29.08.2011, 02:22 | #4 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
ну я тож захотел немного поковырятся в этой задачке вот что получилось...
{ОБНОВЛЕНО} Переделал код, но опять же бага. Создаётся дамп в 4 байта. Мне кажется этого мало.... Код:
Последний раз редактировалось Человек_Борща; 29.08.2011 в 02:33. |
29.08.2011, 12:42 | #5 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 273
|
Да действительно выдает 4 байта, вопрос почему... Вроде как я понял ReadProcessMemory читает не все за раз а только определенную часть(как называется незнаю) и нужно запускать ее в цикле... но я в этом не уверен и к тому же незнаю с какими параметрами ее запускать 2,3 и последующие разы =\
|
29.08.2011, 16:56 | #6 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
В цикле нужно запускать VirtuelQueryEx.
Начинаешь с нулевого адреса, получаешь MEMORY_BASIC_INFORMATION региона, там есть поля размера региона и атрибута состояния страниц в регионе. Читать можно только регионы со страницами в состоянии MEM_COMMIT, при прочих состояниях чтение страниц бессмысленно. Адрес начала региона у тебя есть, размер тоже. Читаешь содержимое страниц региона одним вызовом ReadProcessMemory (или несколькими в цикле - по барабану). Инкрементируешь базовый адрес региона на размер региона и если не вышел за пределы 4гб (для Win32) - повторяешь вышеописанные телодвижения. |
30.08.2011, 14:18 | #7 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 273
|
Весь гугл перерыл но по прежнему не пойму как мне ваши слова в перевести в код который исправит выше написанный пример... Я так понимаю @MemBInfo.BaseAddress это нулевой адрес(0x00000000)? Если это нулевой тогда чтобы перейти к следующему мне нужно повторить все тоже самое только @MemBInfo.BaseAddress+1? Нифига не понимаю ><
|
30.08.2011, 18:37 | #8 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
offtopic
Оу, Человек_Борща, у тебя появилась обработка ошибок! Растёшь А бага-то тут: @RecvBuff, SizeOf(RecvBuff) Чему равне @RecvBuff и SizeOf(RecvBuff) c учётом того, что RecvBuff - динамический массив? Мат-часть.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
30.08.2011, 19:20 | #9 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
mss,
я правильно трактую ваш текст в код? Код:
Цитата:
GunSmoker, почему же? Код:
Последний раз редактировалось Человек_Борща; 30.08.2011 в 19:29. |
|
30.08.2011, 19:26 | #10 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Цитата:
По ссылке почитай.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чистка памяти чужого процесса | Virus25 | Общие вопросы Delphi | 1 | 30.05.2011 07:42 |
Считать значение из памяти чужого процесса | EvgenyZ | Win Api | 2 | 27.11.2009 09:29 |
Выполнение адреса памяти чужого процесса | XAOC-forever | Общие вопросы Delphi | 2 | 15.12.2008 09:03 |
Дамп процесса | Takedown | Общие вопросы C/C++ | 1 | 01.08.2008 00:19 |