Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.036 c
10-1050070965
Aleksandr
2003-04-11 18:22
2004.10.17
Ну не пойму я никак, как сделать разрешение/запрет на соединение!


4-1094851020
массив
2004-09-11 01:17
2004.10.17
Как определить время простаивания системы для Win9x ?


6-1091766035
race1
2004-08-06 08:20
2004.10.17
idhttp.onwork


4-1095385626
PEAKTOP
2004-09-17 05:47
2004.10.17
Перехват отправки формы в Internet Explorer


14-1096261328
Ihor Osov'yak
2004-09-27 09:02
2004.10.17
XP + 160 GB = PIO ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский