![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
vzf |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 10.9.2005 Репутация: нет Всего: 5 |
Здравствуйте. Подскажите, кто знает, функции дл определения следующих вещей:
- определение адреса, по которому загружен текущий процесс - определение максимального и минимального адресов виртуальной памяти системы - определение dll-модулей "подгружаемых" текущим процессом и адресов, по которым они загружены - определение адресов, по которым текущий процесс не может производить запись Буду очень признателен. --------------------
Java - Write Once, Test EveryWhere! |
|||
|
||||
BUGOR |
|
||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 12.3.2006 Репутация: 1 Всего: 16 |
GetModuleHandle(0); Это даст смещение образа файла отображённого на память(ну или ImageBase данного процесса, думаю ты именно это имел ввиду), а каждый процесс имеет своё адресное пространство, которое начинается с 0x1000.
Что это значит? Каждый процесс имеет своё собственное адресное пространство с адреса 0x1000 до 0x7FFFFFFF и общее пространство(которое доступно только на уровне ядра) начиная с 0x80000000 и до 0xFFFFFFFFF, это собственно ты хотел узнать? Или самый высокий адресс памяти который используется? Тогда начиная со смещения 0x1000 вызывай:
Пока она возвращает валидную структуру регионы памяти есть(шаг описка определяется MEMORY_BASIC_INFORMATION.RegionSize)
Это легко делается с помощью CreateToolhelp32Snapshot с флагом TH32CS_SNAPMODULE, приводить пример не вижу смысла, их хватает и на этом форуме и в сети.
Опять же вызов VirtualQuery, которая в возвращаемой структуре MEMORY_BASIC_INFORMATION имеет поле AllocationProtect, проверяй его на аттрибут PAGE_READWRITE, PAGE_WRITECOPY, PAGE_EXECUTE_READWRITE и PAGE_EXECUTE_WRITECOPY. |
||||||||||
|
|||||||||||
vzf |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 10.9.2005 Репутация: нет Всего: 5 |
Благодарю.
--------------------
Java - Write Once, Test EveryWhere! |
|||
|
||||
ЫукпШ |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 20.10.2006 Репутация: нет Всего: нет |
..WinMain (HINSTANCE hThisInst... hThisInst это и есть ImageBase. Для любого окна (контрола) приложения его можно определить:
Это сообщение отредактировал(а) ЫукпШ - 22.10.2006, 16:47 |
||||
|
|||||
Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 4 Всего: 29 |
||||
|
||||
ЫукпШ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 20.10.2006 Репутация: нет Всего: нет |
У DLL это будет: .... DllMain (HANDLE hinstDLL.. Кроме указанного выше способа - GetModuleHandle(0); - существуют и другие. ![]() Например: 1. порыцца в PE заголовке конкретного модуля. ![]() 2. сделать CreateProcess для PE-TOOLS и считать нужную информацию из его окошка. ![]() Это сообщение отредактировал(а) ЫукпШ - 22.10.2006, 18:33 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |