|
Asm/C++/Delphi/Py/PHP/VBA
|
||
NtOpenSection → OpenFileMapping30.09.2018, 23:06. Показов 5049. Ответов 47
Метки нет (Все метки)
Привет!
Подскажите, кто знает, как открыть \Device\PhysicalMemory через OpenFileMapping, а не через NtOpenSection ? Проблема в том, что OpenFileMapping задаёт в качестве поля ObjectAttributes.RootDirectory (при вызове NtOpenSection) значение, возвращаемое BaseGetNamedObjectDirectory(), а не NULL. Т.е. если заменить это поле на NULL (изнутри функции OpenFileMappingW), всё работает. Иначе возвращается ошибка. MSDN пишет про поле RootDirectory:
Я так понял, это путь \BaseNamedObjects, только что это за путь и как относительно него адресовать \Device\PhysicalMemory – х/з.
0
|
||
| 30.09.2018, 23:06 | |
|
Ответы с готовыми решениями:
47
Выполнить преобразование: 140,536→[?]5→[?]4→[?]7 Вывести закон контрапозиции (A→¬B)→(B→¬A) Word 2016/2019, уравнение → конструктор → Сумма |
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||
| 01.10.2018, 06:18 | ||
|
Ни хрена не понимаю в этой галиматье, но имею сказать, что если у тебя имеется хендл ObjectAttributes.RootDirectory , то применив его к
NTSTATUS ObReferenceObjectByHandle( IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType OPTIONAL, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL ) ты получишь *Object - corresponding pointer to the object's body. А там в этой "боде" как выглядит Т.е. если в поле ObjectAttributes.RootDirectory лежит хендл объекта Рут_Директори, то получить по этому хендлу адрес самого объекта Рут_Директори и посмотреть что там лежит. Ну там строчки или ссылки на строчки. Должен же там этот путь Рут_Директори в виде строки лежать.
0
|
||
|
Модератор
|
||
| 01.10.2018, 09:49 | ||
|
Из Win32 объекты могут быть и не видны под своими именами.
Добавлено через 6 минут https://docs.microsoft.com/en-... namespaces Добавлено через 56 минут \\.\PhysicalMemory
0
|
||
|
Asm/C++/Delphi/Py/PHP/VBA
|
||||||
| 01.10.2018, 15:11 [ТС] | ||||||
![]() GetLastError выдаёт 000000A1 (ERROR_BAD_PATHNAME), (NtOpenSection выдаёт там C000003B (STATUS_OBJECT_PATH_SYNTAX_BAD)).
0
|
||||||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||||
| 01.10.2018, 20:34 | ||||
|
1
|
||||
|
Asm/C++/Delphi/Py/PHP/VBA
|
|||
| 02.10.2018, 00:20 [ТС] | |||
|
Ну и через OpenFileMapping не надо инициализировать ObjectAttributes и записывать строку в UNICODE-формате (да, я понимаю, что там куча обёрток и пр. ерунды). В общем, перепробовал 6 вариантов: ..\PhysicalMemory\..\PhysicalMemory..\..\PhysicalMemory\..\..\PhysicalMemory..\..\..\PhysicalMemory\..\..\..\PhysicalMemoryВсё бестолку. Иногда, правда, вместо STATUS_OBJECT_PATH_SYNTAX_BAD выдаётся STATUS_OBJECT_PATH_NOT_FOUND.
0
|
|||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||||
| 02.10.2018, 06:09 | ||||
![]() Нет, ну реально, берем черный ящик, документации по нему тебе не дадут, кто в нем понимает говорить с тобой не станет и начинаем с "тупорыло предположим, что". Все равно того кто знает в топике нет, так-что чем в данном случае не метод ? Вот есть такая дивная утилита : https://docs.microsoft.com/en-... ads/winobj Если она показывает то с чем ты имеешь дело, то \BaseNameObjects там в двух местах, в корне и внутри \Sessions\1 , \Device есть, а вот \Device\PhysicalMemory что-то не видать. Добавлено через 4 часа 35 минут
1
|
||||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|
| 03.10.2018, 01:31 | |
|
Боюсь, что
Название может иметь префикс "Global" или "Local", чтобы явно открывать объект в глобальном или сессионном пространстве имен. Остаточный член имени может содержать любые символы кроме символа обратного слэша (\). то есть у функции OpenFileMapping принудительно закрыта возможность ползать по путям куда захочется. Добавлено через 4 минуты Global или Local - это символические ссылки. Global - ссылка на \BaseNamedObjects . И еще вижу ссылку Section . Вот если бы там лежала бы еще одна символическая ссылка на \Device . Если ее как-нибудь туда подкинуть. Добавлено через 15 минут По ссылкам вроде-бы можно бегать сколько угодно. Например до объекта \BaseNamedObjects\RasPbFile я вроде как добрался (сужу только по изменениям номеров ошибок) именем "RasPbFile" и именем "Session\0\RasPbFile" где ссылка Session указывает на \Sessions\BNOLINK , внутри которого еще одна ссылка 0 на \BaseNamedObjects . То есть по ссылкам я прошел как-бы по кругу.
0
|
|
| 03.10.2018, 06:02 | ||||||
|
У меня вроде получилось сделать какую-то ссылку.
type lpt4, copy ругаются на Неверный дескриптор.
0
|
||||||
|
Asm/C++/Delphi/Py/PHP/VBA
|
|||
| 03.10.2018, 11:50 [ТС] | |||
lpt4 не стал же алиасом \Device\PhysicalMemory.
0
|
|||
|
Модератор
|
|
| 03.10.2018, 12:32 | |
|
Jin X, если не стал, то где-то в DosDevices или ещё где-нибудь есть соответствие
lpt4 -> [inline]\Device\PhysicalMemory[/quote]Если бы это было не так, почему тогда QueryDosDevice( "lpt4") вернул \Device\PhysicalMemory ?Напрямую через досовое имя секция, скорее всего, не окроется, хотя бы потому, что искать начинает с другого корня, но можно попытаться найти эту ссылку через относительный путь. Добавлено через 10 минут Но лучше, наверно, не пытаться, а пользоваться тем, что работает. Для подобных программ и предназначены нативные функции.
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|
| 03.10.2018, 20:39 | |
|
Просто идея. Лень проверять. Если с помощью NtCreateSymbolicLinkObject в \BaseNamedObjects создать символическую ссылку Blabla на \Device , то именем Blabla\PhysicalMemory ты бы открыл то, что тебе нужно. Если в \BaseNamedObjects уже есть три символические ссылки, то они должны обрабатываться каким-то общим алгоритмом. Ну и раз по этим трем ссылкам мы ходить можем, то и по четвертой сможем.
Добавлено через 3 минуты Просто пока у меня получется, что ос отказывается воспринимать .. как переход на каталог вверх в этом пространстве имен объектов. ..\BaseNamedObjects по идее должна не изменять путь, потому-что сначала вверх, а потом обратно вниз. Но ругается ERROR_PATH_NOT_FOUND. Ну и если по .. пройти наверх нельзя, то по ссылке-то можно и сразу куда нужно. Добавлено через 1 минуту Вот так бегать по ссылкам туда-сюда не вопрос "Local\Global\Local\Global\Local\Global\ Local\Global\RasPbFile" Добавлено через 51 минуту NtCreateSymbolicLinkObject , как понял, должна создать ссылку, которая не есть перманентный объект. Как только ты проделаешь CloseHandle с хендлом этой ссылки она удалится. Но это ведь то, что надо. Временной ссылкой проложить куда надо путь. Проторить так-сказать дорогу.
1
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|||
| 04.10.2018, 09:37 | |||
|
0
|
|||
|
Эксперт Hardware
|
|||||||
| 04.10.2018, 10:36 | |||||||
Сообщение было отмечено Jin X как решение
Решение
Разрешено читать только содержимое указанных выше каталогов по именам объектов, которое ищется сначала в "\BaseName", потом в "\Global??". Если такого имени нет, то встречаем ошибку "Файл не найден!". Можно создавать объекты самому чз "CreateFileMapping", но они помещаются только в эти каталоги, а "\Device" находится выше, ..значит подобраться к нему будет проблематично. Хоть ты и получишь как-нибудь ссылку, то нужно будет указать её в пути, опять-же через косую черту, которая запрещена. Например вот прожка для теста ошибки (чтоб не ловить эрроры в отладчике), и при косой черте в любом виде выплёвывает "Недопустимый путь!". Если оставить только "PhysicalMemory", то и создаётся и открывается без проблем, но только в дирах Base и Global, а значит драйверам IO (которые читаю память) из папки \Device, этот файл становится не доступным.
он разжёвывает тему объектов не по-детски и с примерами.
3
|
|||||||
|
Asm/C++/Delphi/Py/PHP/VBA
|
|
| 04.10.2018, 13:47 [ТС] | |
|
В общем, получается, что задача нерешаемая, открыть можно только через NtOpenSection...
0
|
|
| 04.10.2018, 13:47 | |
|
Помогаю со студенческими работами здесь
20
Упростить формулу A^(B→A)→Ā. Проверьте результат, используя таблицу истинности (A → B) ∧ (B→¬ A ) ∧(C→A) упростите формулу
Что нужно сделать, чтобы получить доступ к OpenFileMapping Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|