purebasic.info

PureBasic forum
Текущее время: Сб дек 15, 2018 10:26 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: Вс дек 07, 2014 6:20 pm 
Не в сети
студент

Зарегистрирован: Вс янв 26, 2014 7:16 am
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Подскажите, можно ли как нибудь воспользоваться процедурами "WriteProcessMemory и ReadProcessMemory" в драйвере?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс дек 07, 2014 8:03 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11336
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
Нет нельзя. Это API функции и они прикладного уровня, а в ядре необходимо использовать функции ядра. Кроме того, в ядре доступна вся память и нет разделения на память процессов, т. е. можно просто работать с памятью. Для этого необходимо получить физический адрес памяти из виртуального (с которым работают процессы прикладного уровня) и читать/писать в память функциями PeekI/PokeI и др. подобными.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс дек 07, 2014 9:52 pm 
Не в сети
студент

Зарегистрирован: Вс янв 26, 2014 7:16 am
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр, можешь пример привести???

Создать например драйвер и 2 исходника, 1 на управление драйвером а другой как тестовую программу?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс дек 07, 2014 10:14 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11336
Благодарил (а): 4 раз.
Поблагодарили: 443 раз.
skyp4ik писал(а):
можешь пример привести???
Готового примера нет.
Но если не ошибаюсь, виртуальный адрес памяти, преобразовывается в физический функцией MmGetPhysicalAddress(). http://msdn.microsoft.com/en-us/library ... e/ff554547

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн дек 08, 2014 11:40 am 
Не в сети
студент

Зарегистрирован: Вс янв 26, 2014 7:16 am
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр, че то мне вообще не понятно с этими виртуальными адресами.

Вот смотри если в программе все реализуется так:
Код:
1
2
3
4
5
 
      Handle = OpenProcess_(#PROCESS_ALL_ACCESS, #Null, "Пид процеса") - дескриптор заданного процесса
      ReadProcessMemory_(Handle, "адрес", val.LONG, 4, 0) - Чтение значения адреса памяти процесса
      val\l - результат
 



Достаточно лишь знать Pid процесса и можно работать с его памятью.

Вопрос:
Как реализовать подобное в драйвере?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB