Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6818 / 2056 / 239
Регистрация: 14.12.2014
Сообщений: 4,329
Записей в блоге: 13

NtOpenSection → OpenFileMapping

30.09.2018, 23:06. Показов 5386. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет!

Подскажите, кто знает, как открыть \Device\PhysicalMemory через OpenFileMapping, а не через NtOpenSection ?
Проблема в том, что OpenFileMapping задаёт в качестве поля ObjectAttributes.RootDirectory (при вызове NtOpenSection) значение, возвращаемое BaseGetNamedObjectDirectory(), а не NULL. Т.е. если заменить это поле на NULL (изнутри функции OpenFileMappingW), всё работает. Иначе возвращается ошибка.

MSDN пишет про поле RootDirectory:
Optional handle to the root object directory for the path name specified by the ObjectName member. If RootDirectory is NULL, ObjectName must point to a fully qualified object name that includes the full path to the target object. If RootDirectory is non-NULL, ObjectName specifies an object name relative to the RootDirectory directory. The RootDirectory handle can refer to a file system directory or an object directory in the object manager namespace.
Т.е. надо полный путь \Device\PhysicalMemory преобразовать относительно пути, хендл которого выдаёт BaseGetNamedObjectDirectory(). Как это сделать?
Я так понял, это путь \BaseNamedObjects, только что это за путь и как относительно него адресовать \Device\PhysicalMemory – х/з.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.09.2018, 23:06
Ответы с готовыми решениями:

Выполнить преобразование: 140,536→[?]5→[?]4→[?]7
Выполнить преобразование: 140,536→5→4→7 Добавлено через 2 часа 40 минут Просто я гуманитарий, а нам задали в институте порешать вот...

Вывести закон контрапозиции (A→¬B)→(B→¬A)
Вывести закон контрапозиции (A→¬B)→(B→¬A): Откуда взялись эти леммы?: 1) A→B, B→C⊢A→C 2)A→(B→C)⊢B→(A→C)...

Word 2016/2019, уравнение → конструктор → Сумма
Независимо от того, какой значек я нажимаю, вставленный значек суммы всегда имеет вид, как на правом значке Это можно как-то...

47
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6216 / 2450 / 403
Регистрация: 29.07.2014
Сообщений: 3,181
Записей в блоге: 4
04.10.2018, 14:14
Студворк — интернет-сервис помощи студентам
в общем случае - да.
это юзерская функция, которая предназначена по-большей мере для создания и открытия своих объектов, которые следили-бы над мьютексами и прочей хренью, внутри своего пространства.

например, можно попытаться открыть объекты из указанных/доступных папок, но и то большинство из них не открываются, а те к которым доступ всё-же есть, пишут "Неверный дескриптор!". То-есть родитель создал объект с ненаследуемым дескриптором (атрибут в CreateFileMapping), поэтому посторонним туда вход запрещён.

Добавлено через 6 минут
вот что пишет Рихтер (или кто-то другой, уже не помню):
Рассмотрим следующий пример:
Прикладная программа вызывает функцию Win32 - CreateFile() с именем файла «c:\mydir\file.txt».
При этом происходят следующие действия:

1. Вызов системного сервиса NtCreateFile().
В качестве имени ему будет передано «\??\c:\mydir\file.txt».
Такой формат имени является «родным» для NT - это имя в пространстве имен Диспетчера Объектов.

2. Диспетчер Объектов начнет последовательно разбирать переданное имя.
Первым будет разобран элемент «\??». Корень пространства имен содержит объект с таким именем, тип объекта - «Directory». В этой директории будет произведен поиск объекта с именем «с:». Это - «SymbolicLink» - ссылка на имя «\Device\Harddisk0\ Partition 1».

3. Дальнейшему разбору будет подвергнуто имя «\Device\Harddisk0\Partitionl\ mydir\file.txt». Разбор будет закончен при достижении объекта, не являющегося директорией или символической связью. Таким объектом будет «Partition 1», имеющий тип «Device». Этому объекту для дальнейшей обработки будет передано имя «\mydir\file.txt».
здесь видно, что в любом случае управление получает "NtCreateFile()" - нативные функции,
поэтому лучше юзать сразу их, хотя они и слишком громоздкие
2
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
04.10.2018, 19:53
Цитата Сообщение от R71MT Посмотреть сообщение
Для этой функции запрещена косая черта в любом виде: хоть в голове, хоть в тушке.
Ну и как-же она запрещена, коли Global\имя_объекта и Local\имя_объекта как раз и рекомендуются как правильные имена для этой функции. Они ведь как раз содержат косую черту.

Что-то у вас полный отвал логики.

В том-то и дело, что правило там есть, оно по видимому разное для разных версий виндов, но точно не такое как в цитате из Руссиновича. Правило должно любые логические противоречия устранять. Например те, что не может быть абсолютно низзя то, что иногда можно.

Добавлено через 9 минут
Вот типа написано
Code
1
Windows 2000: Если Терминал сервисов не запущен,  префиксы "Global\" и "Local\" игнорируются. Остаток от имени может содержать любой символ кроме символа обратного слэша (\).
Ну значит без противоречий, как рабочая гипотеза, будет так :

Если запущен терминал сервисов (понятия не имею что это) или Win не 2000, то правильные имена
[символическая_ссылка\]имя_объекта
, где
[ ] означают может присутствовать любое число раз или не присутствовать вовсе

Добавлено через 1 минуту
P.S.
Баг форумного движка ? Пишу ниже одно и то-же в разных тегах :
Code
1
"Global\"
"Global"
"Global"
"Global"
Куда обратная косая девается ?

Добавлено через 3 минуты
Assembler
1
"Global\"
2
04.10.2018, 19:53

Не по теме:

Ethereal, сообщите в соответствующей теме. А пока попробуйте обрамлять тегами NOPARSE

0
05.10.2018, 08:01

Не по теме:

Ethereal, по пропаданию слэша.
https://www.cyberforum.ru/post12946787.html
https://www.cyberforum.ru/post12946792.html

Так что так и останется, к сожалению.

0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6216 / 2450 / 403
Регистрация: 29.07.2014
Сообщений: 3,181
Записей в блоге: 4
05.10.2018, 09:32
Цитата Сообщение от Ethereal Посмотреть сообщение
Что-то у вас полный отвал логики.
серьёзно? может это констатация фактов, которым я привык доверять?
думаю всё-таки есть резон ознакомится хотя-бы повехностно с Рихтером..
https://wm-help.net/books-onli... 64-22.html

со-времён Win2000 утекло не мало воды, и политика безопасности уже совсем иная, даже у ХР (не говоря уже об остальных). Объекты - это компоненты ядра, и если-бы из юзера к ним можно было так-просто подобраться, то грошь цена такому 'ProtectedMode'. С прикладного уровня, этой функцией админу позволено только создавать объекты для своих нужд, и попадают эти объекты не куда-попало, а только в папку "BaseNamedObjects".

Вот пример в 'WinObj', когда я создал объект db "_R71MT",0 и он прекрассно отображается в списке. При этом косая черта в имени так-же запрещена, хотя терминал-сервис в системных службах запущен. Данная функция напрочь отвергает её наличие, поэтому при создании объектов, ядро подменяет косую черту на что-угодно, только не обратный слэш, ..например: _, #, !, /, и т.д. (см.пути в WinObj). Как только я закрываю своё приложение, мой объект пропадает из списка ниже:



После создания объекта, у него включается счётчик, указывающий, сколько программных потоков используют этот объект (см.свойства объекта в WinObj.exe). Если этот счётчик обнуляется, то "Диспетчер объектов" автоматом удаляет этот объект из списка объектов. При создании объекта ты можешь порождать его дескриптор наследуемым, или нет.

Системное ядро-же (исходя из своей политики) не горит желанием делать свои объекты наследуемыми и выбирает другой путь - создание экземпляров имён. Ядро дублирует имена объектов из своего списка в юзерский процесс по-требованию (fn.DuplicateHandle) и только те из них, которые считает безопасными. Большинство дубликатов валяются в указанной папке 'Global??\' в виде ссылок на объекты устройств MS-DOS (диски, порты и пр.). Кстати, каталог '\DosDevices' в корне(\..) таблицы - это обычная ссылка на каталог \Global??.
2
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
05.10.2018, 10:40
DosDevices у сессий свои
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6216 / 2450 / 403
Регистрация: 29.07.2014
Сообщений: 3,181
Записей в блоге: 4
05.10.2018, 10:57
politoto, и что дальше? есть в корне и есть свои - всё это ссылки на глобал.
к чему это заявление?
1
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
05.10.2018, 11:33
Я бы сказал, что в DosDevices есть ссылка Global на \Global??.
А в \Global?? есть не всё, что есть в DosDevices, или WinObj не всё показывает

Добавлено через 11 минут
\DosDevices Link: \??
0
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6818 / 2056 / 239
Регистрация: 14.12.2014
Сообщений: 4,329
Записей в блоге: 13
05.10.2018, 12:56  [ТС]
Цитата Сообщение от R71MT Посмотреть сообщение
если-бы из юзера к ним можно было так-просто подобраться, то грошь цена такому 'ProtectedMode'
В юзере я совершенно спокойно могу использовать NtOpenSection. Мне даже права админа не нужны. Поэтому какая разница?

Добавлено через 14 минут
Цитата Сообщение от ОС Посмотреть сообщение
У меня вроде получилось сделать какую-то ссылку.
Ссылка создаётся, только открыть её через OpenFileMapping всё равно не получается.
2
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6216 / 2450 / 403
Регистрация: 29.07.2014
Сообщений: 3,181
Записей в блоге: 4
05.10.2018, 13:46
Цитата Сообщение от politoto Посмотреть сообщение
Я бы сказал
..ну тогда и надо так говорить, а не ограничиваться двумя словами (типа остальное догоняйте сами)

Цитата Сообщение от Jin X Посмотреть сообщение
Мне даже права админа не нужны.
не проверял, но думаю для доступа к NT-функциям как-минимум права нужны.
а в эту опен_файл_мап я какие-только пути и адреса не подставлял, и везде прокол.
она даже не открывает то, что лежит в доступных папках Global и Base
1
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
05.10.2018, 14:04
Цитата Сообщение от R71MT Посмотреть сообщение
думаю для доступа к NT-функциям как-минимум права нужны.
Вы же сами писали:
Цитата Сообщение от R71MT Посмотреть сообщение
в любом случае управление получает "NtCreateFile()" - нативные функции,
Права нужны на те или иные действия с объектами, а не на вызов функций, которые просят систему эти действия выполнить.
1
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6216 / 2450 / 403
Регистрация: 29.07.2014
Сообщений: 3,181
Записей в блоге: 4
05.10.2018, 14:33
Цитата Сообщение от politoto Посмотреть сообщение
Вы же сами писали:
вообщем не понимаю, какая тут связь.. и не нужно вырывать слова из контекста
во-втором случае натив получает управление от юзерской функции, и здесь нет ничего удивительного.
а в первом случае - ты сам вызываешь натив, и могут возникнуть проблемы с правами доступа

Добавлено через 10 минут
между функциями юзера и ядра есть прослойка в виде драйверов,
поэтому не к каждой/нативной функции у юзера есть доступ, ими могут пользоваться только драйвера.
это и есть разница между первым и вторым случаем.
2
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6818 / 2056 / 239
Регистрация: 14.12.2014
Сообщений: 4,329
Записей в блоге: 13
05.10.2018, 17:02  [ТС]
Цитата Сообщение от R71MT Посмотреть сообщение
не проверял, но думаю для доступа к NT-функциям как-минимум права нужны.
Хм. У меня на XP (VMware) почему-то по умолчанию запускалось всё от админа. Запустил "от имени..." юзера и действительно получил отказ.
1
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6216 / 2450 / 403
Регистрация: 29.07.2014
Сообщений: 3,181
Записей в блоге: 4
06.10.2018, 10:40
Цитата Сообщение от Jin X Посмотреть сообщение
"от имени..." юзера и действительно получил отказ.
с нативными функциями есть фишка, которая иногда помогает обойти это ограничение,
но тут нужно понимать общие принципы обработки юзерских функций системным диспетчером.

Попробуй заюзать Zw-вариант этой функции, т.к. она не проверяет атрибуты доступа. Только не проверяет (и не выравнивает) она и кол-во аргументов, поэтому нужно быть внимательным. Если не поможет, значит перед вызовом нужно установить ещё и флаг 'PreviousMode' в Kernel(0), поскольку у юзерских приложений он выставляется в User(1), и управление опять перенаправится к Nt-варианту функции. То-есть Nt* проверяет доступ и атрибуты, а Zw* игнорирует их.
2
328 / 81 / 2
Регистрация: 21.07.2018
Сообщений: 112
Записей в блоге: 1
06.10.2018, 22:16
Вы, похоже, пишете о модулях и драйверах, которые напрямую связываются с ядром.
Для обычных процессов, которые в конце концов вызывают функции из ntdll.dll, большая часть Zw* это другое имя для Nt*

409 18A 0006AA60 NtOpenSection
1768 6DF 0006AA60 ZwOpenSection
250 EB 0006BD90 NtClose
1611 642 0006BD90 ZwClose
289 112 0006B8B0 NtCreateSymbolicLinkObject
1650 669 0006B8B0 ZwCreateSymbolicLinkObject
Кликните здесь для просмотра всего текста

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
C:\Windows\System32>dumpbin /exports ntdll.dll | findstr /r "\<[ZN][wt][OC][prl]"
        249   EA 0006BDB0 NtClearEvent
        250   EB 0006BD90 NtClose
        251   EC 0006BD70 NtCloseObjectAuditAlarm
        261   F6 0006BC30 NtCreateDebugObject
        262   F7 0006BC10 NtCreateDirectoryObject
        263   F8 0006BBF0 NtCreateDirectoryObjectEx
        264   F9 0006BBD0 NtCreateEnlistment
        265   FA 0006BBB0 NtCreateEvent
        266   FB 0006BB90 NtCreateEventPair
        267   FC 0006BB70 NtCreateFile
        268   FD 0006BB10 NtCreateIRTimer
        269   FE 0006BB50 NtCreateIoCompletion
        270   FF 0006BAF0 NtCreateJobObject
        271  100 0006BAD0 NtCreateJobSet
        272  101 0006BAB0 NtCreateKey
        273  102 0006BA70 NtCreateKeyTransacted
        274  103 0006BA90 NtCreateKeyedEvent
        275  104 0006B810 NtCreateLowBoxToken
        276  105 0006BA50 NtCreateMailslotFile
        277  106 0006BA30 NtCreateMutant
        278  107 0006BA10 NtCreateNamedPipeFile
        279  108 0006B9F0 NtCreatePagingFile
        280  109 0006B9D0 NtCreatePort
        281  10A 0006B9B0 NtCreatePrivateNamespace
        282  10B 0006B990 NtCreateProcess
        283  10C 0006B970 NtCreateProcessEx
        284  10D 0006B950 NtCreateProfile
        285  10E 0006B930 NtCreateProfileEx
        286  10F 0006B910 NtCreateResourceManager
        287  110 0006B8F0 NtCreateSection
        288  111 0006B8D0 NtCreateSemaphore
        289  112 0006B8B0 NtCreateSymbolicLinkObject
        290  113 0006B890 NtCreateThread
        291  114 0006B870 NtCreateThreadEx
        293  115 0006B850 NtCreateTimer
        292  116 0006BB30 NtCreateTimer2
        294  117 0006B7F0 NtCreateToken
        295  118 0006B830 NtCreateTokenEx
        296  119 0006B7D0 NtCreateTransaction
        297  11A 0006B7B0 NtCreateTransactionManager
        298  11B 0006B790 NtCreateUserProcess
        299  11C 0006B750 NtCreateWaitCompletionPacket
        300  11D 0006B770 NtCreateWaitablePort
        301  11E 0006B730 NtCreateWnfStateName
        302  11F 0006B710 NtCreateWorkerFactory
        390  177 0006ACC0 NtOpenDirectoryObject
        391  178 0006ACA0 NtOpenEnlistment
        392  179 0006AC80 NtOpenEvent
        393  17A 0006AC60 NtOpenEventPair
        394  17B 0006AC40 NtOpenFile
        395  17C 0006AC20 NtOpenIoCompletion
        396  17D 0006AC00 NtOpenJobObject
        397  17E 0006ABE0 NtOpenKey
        398  17F 0006ABA0 NtOpenKeyEx
        399  180 0006AB80 NtOpenKeyTransacted
        400  181 0006AB60 NtOpenKeyTransactedEx
        401  182 0006ABC0 NtOpenKeyedEvent
        402  183 0006AB40 NtOpenMutant
        403  184 0006AB20 NtOpenObjectAuditAlarm
        404  185 0006AB00 NtOpenPrivateNamespace
        405  186 0006AAE0 NtOpenProcess
        406  187 0006AAC0 NtOpenProcessToken
        407  188 0006AAA0 NtOpenProcessTokenEx
        408  189 0006AA80 NtOpenResourceManager
        409  18A 0006AA60 NtOpenSection
        410  18B 0006AA40 NtOpenSemaphore
        411  18C 0006AA20 NtOpenSession
        412  18D 0006AA00 NtOpenSymbolicLinkObject
        413  18E 0006A9E0 NtOpenThread
        414  18F 0006A9C0 NtOpenThreadToken
        415  190 0006A9A0 NtOpenThreadTokenEx
        416  191 0006A980 NtOpenTimer
        417  192 0006A960 NtOpenTransaction
        418  193 0006A940 NtOpenTransactionManager
 
      1610  641 0006BDB0 ZwClearEvent
       1611  642 0006BD90 ZwClose
       1612  643 0006BD70 ZwCloseObjectAuditAlarm
       1622  64D 0006BC30 ZwCreateDebugObject
       1623  64E 0006BC10 ZwCreateDirectoryObject
       1624  64F 0006BBF0 ZwCreateDirectoryObjectEx
       1625  650 0006BBD0 ZwCreateEnlistment
       1626  651 0006BBB0 ZwCreateEvent
       1627  652 0006BB90 ZwCreateEventPair
       1628  653 0006BB70 ZwCreateFile
       1629  654 0006BB10 ZwCreateIRTimer
       1630  655 0006BB50 ZwCreateIoCompletion
       1631  656 0006BAF0 ZwCreateJobObject
       1632  657 0006BAD0 ZwCreateJobSet
       1633  658 0006BAB0 ZwCreateKey
       1634  659 0006BA70 ZwCreateKeyTransacted
       1635  65A 0006BA90 ZwCreateKeyedEvent
       1636  65B 0006B810 ZwCreateLowBoxToken
       1637  65C 0006BA50 ZwCreateMailslotFile
       1638  65D 0006BA30 ZwCreateMutant
       1639  65E 0006BA10 ZwCreateNamedPipeFile
       1640  65F 0006B9F0 ZwCreatePagingFile
       1641  660 0006B9D0 ZwCreatePort
       1642  661 0006B9B0 ZwCreatePrivateNamespace
       1643  662 0006B990 ZwCreateProcess
       1644  663 0006B970 ZwCreateProcessEx
       1645  664 0006B950 ZwCreateProfile
       1646  665 0006B930 ZwCreateProfileEx
       1647  666 0006B910 ZwCreateResourceManager
       1648  667 0006B8F0 ZwCreateSection
       1649  668 0006B8D0 ZwCreateSemaphore
       1650  669 0006B8B0 ZwCreateSymbolicLinkObject
       1651  66A 0006B890 ZwCreateThread
       1652  66B 0006B870 ZwCreateThreadEx
       1654  66C 0006B850 ZwCreateTimer
       1653  66D 0006BB30 ZwCreateTimer2
       1655  66E 0006B7F0 ZwCreateToken
       1656  66F 0006B830 ZwCreateTokenEx
       1657  670 0006B7D0 ZwCreateTransaction
       1658  671 0006B7B0 ZwCreateTransactionManager
       1659  672 0006B790 ZwCreateUserProcess
       1660  673 0006B750 ZwCreateWaitCompletionPacket
       1661  674 0006B770 ZwCreateWaitablePort
       1662  675 0006B730 ZwCreateWnfStateName
       1663  676 0006B710 ZwCreateWorkerFactory
       1749  6CC 0006ACC0 ZwOpenDirectoryObject
       1750  6CD 0006ACA0 ZwOpenEnlistment
       1751  6CE 0006AC80 ZwOpenEvent
       1752  6CF 0006AC60 ZwOpenEventPair
       1753  6D0 0006AC40 ZwOpenFile
       1754  6D1 0006AC20 ZwOpenIoCompletion
       1755  6D2 0006AC00 ZwOpenJobObject
       1756  6D3 0006ABE0 ZwOpenKey
       1757  6D4 0006ABA0 ZwOpenKeyEx
       1758  6D5 0006AB80 ZwOpenKeyTransacted
       1759  6D6 0006AB60 ZwOpenKeyTransactedEx
       1760  6D7 0006ABC0 ZwOpenKeyedEvent
       1761  6D8 0006AB40 ZwOpenMutant
       1762  6D9 0006AB20 ZwOpenObjectAuditAlarm
       1763  6DA 0006AB00 ZwOpenPrivateNamespace
       1764  6DB 0006AAE0 ZwOpenProcess
       1765  6DC 0006AAC0 ZwOpenProcessToken
       1766  6DD 0006AAA0 ZwOpenProcessTokenEx
       1767  6DE 0006AA80 ZwOpenResourceManager
       1768  6DF 0006AA60 ZwOpenSection
       1769  6E0 0006AA40 ZwOpenSemaphore
       1770  6E1 0006AA20 ZwOpenSession
       1771  6E2 0006AA00 ZwOpenSymbolicLinkObject
       1772  6E3 0006A9E0 ZwOpenThread
       1773  6E4 0006A9C0 ZwOpenThreadToken
       1774  6E5 0006A9A0 ZwOpenThreadTokenEx
       1775  6E6 0006A980 ZwOpenTimer
       1776  6E7 0006A960 ZwOpenTransaction
       1777  6E8 0006A940 ZwOpenTransactionManager

А в ядре есть отдeльные точки входа для ZwCloseHandle и NtCloseHandle.
И остальные Nt* не по одному адресу с Zw*.
C:\Windows\System32>dumpbin /exports ntoskrnl.exe | findstr /r "\<[ZN][wt][OC][prl]"
1281 4F0 00272858 NtClose
1286 4F5 0001E6B8 NtCreateEnlistment
1287 4F6 00278C6E NtCreateEvent
1288 4F7 00240464 NtCreateFile
1289 4F8 0001E6BE NtCreateResourceManager
1290 4F9 00288076 NtCreateSection
1291 4FA 0001E6C4 NtCreateTransaction
1292 4FB 0001E6CA NtCreateTransactionManager
1310 50D 0001E6E2 NtOpenEnlistment
1311 50E 002D1F24 NtOpenFile
1312 50F 002937B4 NtOpenProcess
1313 510 002BC88A NtOpenProcessToken
1314 511 002BC8AA NtOpenProcessTokenEx
1315 512 0001E6E8 NtOpenResourceManager
1316 513 002EB0C2 NtOpenThread
1317 514 002BACF6 NtOpenThreadToken
1318 515 002BAD18 NtOpenThreadTokenEx
1319 516 0001E6EE NtOpenTransaction
1320 517 0001E6F4 NtOpenTransactionManager
2187 887 000E6178 ZwClearEvent
2188 888 000E6164 ZwClose
2189 889 000E6150 ZwCloseObjectAuditAlarm
2194 88E 000E6074 ZwCreateDirectoryObject
2195 88F 000E604C ZwCreateEnlistment
2196 890 000E6038 ZwCreateEvent
2197 891 000E6010 ZwCreateFile
2198 892 000E5FFC ZwCreateIoCompletion
2199 893 000E5FC0 ZwCreateJobObject
2200 894 000E5F98 ZwCreateKey
2201 895 000E5F70 ZwCreateKeyTransacted
2202 896 000E5E94 ZwCreateResourceManager
2203 897 000E5E80 ZwCreateSection
2204 898 000E5E58 ZwCreateSymbolicLinkObject
2205 899 000E5E1C ZwCreateTimer
2206 89A 000E5DCC ZwCreateTransaction
2207 89B 000E5DB8 ZwCreateTransactionManager
2208 89C 000E5D7C ZwCreateWaitCompletionPacket
2209 89D 000E5D68 ZwCreateWnfStateName
2249 8C5 000E569C ZwOpenDirectoryObject
2250 8C6 000E5688 ZwOpenEnlistment
2251 8C7 000E5674 ZwOpenEvent
2252 8C8 000E564C ZwOpenFile
2253 8C9 000E5624 ZwOpenJobObject
2254 8CA 000E5610 ZwOpenKey
2255 8CB 000E55E8 ZwOpenKeyEx
2256 8CC 000E55D4 ZwOpenKeyTransacted
2257 8CD 000E55C0 ZwOpenKeyTransactedEx
2258 8CE 000E5570 ZwOpenProcess
2259 8CF 000E555C ZwOpenProcessToken
2260 8D0 000E5548 ZwOpenProcessTokenEx
2261 8D1 000E5534 ZwOpenResourceManager
2262 8D2 000E5520 ZwOpenSection
2263 8D3 000E54F8 ZwOpenSession
2264 8D4 000E54E4 ZwOpenSymbolicLinkObject
2265 8D5 000E54D0 ZwOpenThread
2266 8D6 000E54BC ZwOpenThreadToken
2267 8D7 000E54A8 ZwOpenThreadTokenEx
2268 8D8 000E5494 ZwOpenTimer
2269 8D9 000E5480 ZwOpenTransaction
2270 8DA 000E546C ZwOpenTransactionManager
3
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6216 / 2450 / 403
Регистрация: 29.07.2014
Сообщений: 3,181
Записей в блоге: 4
06.10.2018, 23:41
ОС, нет... надо быть настырным, и всё получится..
была и есть дырка, ...другой разговор, если мы не можем это сделать

Пусть ТС чуть посторается, а потом я скажу, где собака зарыта... Иначе - нет интереса.
Jin_X пипец умный чел, только найдёт-ли эту хрень? Думаю нет.. нужна поддержка..

Женя, есть там ход, 100 в гору, чтобы обойти 'NtCreateSection' из юзера. Та=же прога RW оттягивает всех по-полной, значит и тебе положено. Главное нам здесь батонами шевелить...Окрыть Zw-функции вообщем нет проблем.. Просто как я сказалал в начале, нужно знать принцип

Добавлено через 43 минуты
Цитата Сообщение от ОС Посмотреть сообщение
А в ядре есть отдeльные точки входа для ZwCloseHandle и NtCloseHandle.
нет там отдельный точек, а всё точки приходят в ядерную функцию. Зайди в Nt по F+7 в олле - видно-же. Индивидуумы вычислили постоянный адрес, чтобы сбросить ''PreviousMode' в нуль. В этом и заключается знание структур - аля хакерство. Если Jin X, попросит адрес, я ему скажу... и и этот адрес является константой для XP плюс. Давай проверим?
2
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6216 / 2450 / 403
Регистрация: 29.07.2014
Сообщений: 3,181
Записей в блоге: 4
07.10.2018, 00:06
ОС, цепочка там такая, и проверки идут на уровне STD.
Если мы запишем в STD свои атрибуты, то Zw отработает как положено, и не будет проверять атрибуты.
Касперски этой теме посвятил не мало своего времени..
на первый взгляд проблема в атрибутах, но это не так.. их можно поиметь, если Jin X, этого захочет.

функия Zw принимает аргументы как они есть, и если ты один из них уберёшь, то Zw вернёт тебе адрес возврата в ntdll. Пипец системе... если ты его задействуешь. Поэтому она проверяет поле "PreviousMode" - функция юзерская ты и кернел. Я советую Жене, ставить поле в кернел и торкать Zw-функцию, -
Миниатюры
NtOpenSection → OpenFileMapping  
3
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6216 / 2450 / 403
Регистрация: 29.07.2014
Сообщений: 3,181
Записей в блоге: 4
07.10.2018, 01:16
другими словами, ты должен закосить под драйвер из юзера, что вполне возможно.
у нас куча апи, из которых мы знакомы только с 10%
пути - нелегальные, но и требования соответсвующие... как это из пешек сразу в дамки? (как говорил Крис)
2
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6216 / 2450 / 403
Регистрация: 29.07.2014
Сообщений: 3,181
Записей в блоге: 4
07.10.2018, 21:56
..так выглядят популярные реализации GetPreviousMode, если войти в Zw по F7 в оле. И этой инфы достаточно, чтобы написать свою функцию, задачей которой будет анализ имеющейся функции KeGetPreviousMode и создание новой SetPreviousMode, перед вызовом Zw. Дело в том, что нет функции, напрямую меняющей режим Mode, это делается диспетчером на автомате:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2K
;nt!KeGetPreviousMode:
mov     eax,[ffdff124]
movzx   eax,byte ptr [eax+0x134]
ret
 
XP
nt!KeGetPreviousMode:
mov    eax,[ffdff124]
movzx  eax,byte ptr [eax+0x140]
ret
 
2003
nt!KeGetPreviousMode:
mov    eax,fs:[00000124]
movzx  eax,byte ptr [eax+0xd7]
ret
2
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6818 / 2056 / 239
Регистрация: 14.12.2014
Сообщений: 4,329
Записей в блоге: 13
07.10.2018, 22:48  [ТС]
Цитата Сообщение от R71MT Посмотреть сообщение
Попробуй заюзать Zw-вариант этой функции
В ntdll.dll оба варианта имеют одну точку входа, так что разницы никакой.
Если попытаться импортировать ntoskrnl.exe, то прога даже не запускается (сразу ошибка при запуске). А если грузить вручную (LoadLibrary, GetProcAddress), то вызов ZwOpenSection вызывает исключение (пытаясь записать 0x30 в fs).

Цитата Сообщение от R71MT Посмотреть сообщение
Если не поможет, значит перед вызовом нужно установить ещё и флаг 'PreviousMode' в Kernel(0), поскольку у юзерских приложений он выставляется в User(1), и управление опять перенаправится к Nt-варианту функции.
Как же его установить?
К тому же исходя из того, что я написал выше, получается, что Zw-вариант ничего не проверяет и думает, что мы уже в r0, но тут происходит такой конфуз (при записи в fs).

Цитата Сообщение от R71MT Посмотреть сообщение
Та=же прога RW оттягивает всех по-полной
Она же драйвер использует, разве нет? Там в Changelog'е встречаются строки про драйвер.

Добавлено через 4 минуты
Цитата Сообщение от R71MT Посмотреть сообщение
nt!KeGetPreviousMode:
mov eax,[ffdff124]
movzx eax,byte ptr [eax+0x140]
Не даёт XP мне читать значение по адресу 0xffdff124.
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.10.2018, 22:48

Упростить формулу A^(B→A)→Ā. Проверьте результат, используя таблицу истинности
Упростить формулу A^(B→A)→Ā. Проверьте результат, используя таблицу истинности.

(A → B) ∧ (B→¬ A ) ∧(C→A) упростите формулу
(A → B) ∧ (B→¬ A ) ∧(C→A) упростите формулу на основе законах логики, A → B =¬ A ⌵B

Эта функция имеет форму :f(0)→ [] Unitless, а должна иметь форму: f(0)→ any1
Добрый день, помогите пожалуйста кто умеет работать в MathCAD, необходимо построить в курсовой график зависимости. Появляется сообщение...

Создать таблицу → Считать в двумерный массив → Вывести в таблицу
Добрый день. Необходимо создать динамическую таблицу M x N, считать из нее данные и вывести результат в такую же таблицу. Буду рад...

Что нужно сделать, чтобы получить доступ к OpenFileMapping
Подскажите пожалуйста, кто использовал метод OpenFileMapping? У меня программа ругается, говорит что такого метода не существует. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru