Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.17;
Скачать: CL | DM;

Вниз

Как найти адрес нужный памяти в чужом приложении?   Найти похожие ветки 

 
Destroyer ©   (2004-09-11 00:45) [0]

Подскажите пожалуйста как найти адрес памяти в чужом приложении, например по какому-то значению. Например нужно найти адрес по которому находится значение "31 32 32 34h"


 
yozh_programmer ©   (2004-09-11 12:45) [1]

Только перебором адресного пространства! Только не все адреса надо перебирать. Посмотри функцию VirtualQueryEx, некоторые секции адресного пространства нет смысла просматривать.


 
Destroyer ©   (2004-09-12 01:20) [2]

Спасибо, посмотрю.


 
Destroyer ©   (2004-09-12 19:26) [3]

Вопросы по ф-ии VirtualQueryEx :
1)Как узнать номер нужного мне процесса?
2)Как получить " address of region " с помощью ф-ии GetSystemInfo?
3)Какой указывать адрес буфера "address of information buffer "и что это за буфер?


 
Digitman ©   (2004-09-13 09:09) [4]


> 1)Как узнать номер нужного мне процесса?


у процесса нет "номера" ... у процесса есть глобально уникальный идентификатор PID, который вовсе не требуется для работы ф-ции VirtualQueryEx  ... для работы ф-ции VirtualQueryEx требуется хэндл просесса, который м.б. получен ф-цией OpenProcess() .. вот для OpenProcess и нужен PID ... а PID , в свою очередь, связан с именем исп.файла в отношении "многие-к-одному" (т.е. несколько различных PID могут быть ассоциированы с одним и тем же именем исп.файла в случае, например, работы более чем одного экз-ра процесса с заданным именем исп.файла) ... получить список соответствий PID и ExeName можно ф-циями перечисления процессов в составе модулей tlhelp32 (win9x/Me) и psapi (NT/2000/XP)


> 2)Как получить " address of region " с помощью ф-ции GetSystemInfo?


никак
ф-ции эти предназначены для возврата совершенно разной инф-ции

VirtualQueryEx следует вызывать в цикле, начиная с lpAddress = nil и при каждой след.итерации инкрементируя lpAddress на значение RegionSize, возвращенное при предыдущей итерации в структуре MEMORY_BASIC_INFORMATION .. перечисленные в цикле регионы, имеющие State = MEM_FREE и/или Type = MEM_PRIVATE, из рассмотрения на предмет сабжа следует исключать


> 3)Какой указывать адрес буфера "address of information buffer
> "и что это за буфер?


просто передать в кач-ве этого параметра имя переменной типа TMemoryBasicInformation, это и есть "буфер", подготовленный для возврата инф-ции об очередном регионе


 
Суслик ©   (2004-09-13 14:46) [5]


>  [3] Destroyer ©   (12.09.04 19:26)

В Рихтере (программирование для windows) хорошо описан пример перебора виртуального адресного пространства.

Рихтер есть в электронном виде. Ищи.


 
Суслик ©   (2004-09-13 14:48) [6]


> [5] Суслик ©   (13.09.04 14:46)

я имел в виду вот эту книгу http://www.books.ru/shop/books/8283


 
yozh_programmer ©   (2004-09-14 08:54) [7]

Только учтите, что переберать надо не все адреса. Например в NT системах перебирать надо в интервале 64kb..(2GB-64kb) (кажись так было), а в Win9х надо с 2GB..4GB


 
Digitman ©   (2004-09-14 09:14) [8]


> yozh_programmer ©   (14.09.04 08:54) [7]


> учтите, что переберать надо не все адреса


чтой-то вдруг ?
ВАП Win32-процесса - это всегда диапазон адресов от 0 до 4Гб
ничто не мешает получить инф-цию о любом регионе в пределах всего ВАП

и то что тот или иной диапазон адресов ВАП в той или иной системе "зарезервирован для системных нужд", вовсе не означает, что инф-цию о регионах в этом диапазоне нельзя получить


 
Yozh_Programmer ©   (2004-09-14 10:45) [9]

Сорри, я спутал с другой проблемкой!!!
Когда адрес необходимо еше и менять!


 
Digitman ©   (2004-09-14 11:23) [10]


> Yozh_Programmer ©   (14.09.04 10:45) [9]


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



Страницы: 1 вся ветка

Текущий архив: 2004.10.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.05 c
9-1087387768
Elf
2004-06-16 16:09
2004.10.17
Перспектоглюк


1-1096562084
Никита
2004-09-30 20:34
2004.10.17
Изменить TMemo


3-1095415003
sashcan
2004-09-17 13:56
2004.10.17
Диалог пользователя и пароля


8-1084487361
Дмитрий
2004-05-14 02:29
2004.10.17
Маштабирование графики


8-1089642570
ИМХО
2004-07-12 18:29
2004.10.17
PCL