![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| DrHex |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 2.5.2009 Репутация: нет Всего: нет |
Вопрос таков как читать память HANDLE, то и есть делаем следущие
Разумеется происход исключени(access violation reading). Написал драйвер (Код копирование памяти с указанием процесса)
Но читает только пользовательскую память. После чего еще добавил вариант
Но и это не происходит удачно, может читать только не выгружаеме пулы. Так как же все таки моно прочитать? Очень надо........ --------------------
google.com и это все. |
||||||
|
|||||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
меня терзают смутные сомнения,
как сочетается этот код:
с этим выражением: поскольку банальная ошибка представления дескриптора как указателя ни как не вяжется со всем остальным, объясни человеческим языком, что ты хочешь получить? -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Никак. HANDLE, не смотря на то, что описан как void* не является указателем, и ни на какую память не указывает |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
HANDLE занимает 4 байта, а не 16
Добавлено через 35 секунд xvr, некоторые хендлы являются указателями, например HMODULE |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 8 Всего: 154 |
4 или 8 байт, в зависимости от процессорной архитектуры, или вы ничего другого не признаете? |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
Причем тут вообще сколько занимает HANDLE? Он пытается копировать то что находится по указателю а не сам указатель. И вообще как сказал Lazin это зависит от архитектуры |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
Lazin, да, в большинстве систем 4 байта, и в некоторых системах 8байт
|
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Угу, но HANDLE от Mutex таковым не является |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: -1 Всего: 14 |
||||
|
||||
| DrHex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 2.5.2009 Репутация: нет Всего: нет |
Ладно пример я выбрал плохой, чтения HANDLE.
Вопрос в том чтобы читать память ядра. к примеру по адрессу 0x80000000(32 битка). Зачем пишу драйвер? Так как в виндовс поддерживает 2 кольца(0 и 3), а все приложения находятся в 3 кольце из которого нельзя получить доступ к памяти ядра, то пишу драйвер(внимпние: драйвер ядра) что бы получить память(так как драйвер находится в 0 кольце). --------------------
google.com и это все. |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 8 Всего: 154 |
||||
|
||||
| DrHex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 2.5.2009 Репутация: нет Всего: нет |
Lazin извените за грубость но вы название ветки форума видели?
Так вот если вы обитаете в этой ветки форума , то наверника читали 3 томник интела(или у амд чето подобное есть) 32 бит адресное пространство делится на диапозоны. Адрессация с(точно непомни) до 0x80000000 - принадлежит к 3 кольцу Адрессация с 0x80000000 - принадледит 0 кольцу. Винда грузится с 0x80000000. Так вот надо скопировать(потом понадобится запись) память с 0x80000000(и выше). Если делать mempcy просто будет access violation. Если в драйвере тоже будет исключение.(А вот почему?) Отключаем флаг dw в crt3, получаю BSOD. Перевожу в физическую адрессацию тоже получаю BSOD. Если кто то решал такую проблему скажите как? Зачем нужно? ну вопервых читать память процесса, делать дамп адра. Функии ReadProcessMemory/WriteProcessMemory(и Virtual ) на них как правило ставят хуки(даже в рреальзации ntdll, хотя конечно можно их перевисать, но вообщемно индентивикация возмона их по сигнатуре, можно сделать обфускацию но по мне так это уже через чюр, да и память ядра они читать не умеют). --------------------
google.com и это все. |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 8 Всего: 154 |
я говорил о драйвере, который работает в режиме ядра теперь о исключениях, если я в обычном приложении попытаюсь прочитать память по адресу между 0x00000000 и 0x80000000, то получу исключение, так-что режим работы процессора здесь роли не играет, память должна быть выделена, что-бы к ней можно было обращаться |
|||
|
||||
| xvr |
|
||||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Сильно
|
||||||||||
|
|||||||||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: -1 Всего: 14 |
бредить изволите? причем мэпинг к кольцам-то эти адреса виртуальные, и принадлежат они полностью процессу то, что в верхние 2Гб мэпаются системные прибамбасы не делают эти гигабайты "принадлежащими 0 кольцу" |
|||
|
||||
![]()
|
| Правила форума "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. |