|
Asm/C++/Delphi/Py/PHP/VBA
|
||
NtOpenSection → OpenFileMapping30.09.2018, 23:06. Показов 4846. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|