Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.02.06;
Скачать: CL | DM;

Вниз

Принцип работы LookupPrivilegeValueW   Найти похожие ветки 

 
Riply ©   (2009-06-15 15:46) [0]

Здравствуйте !

Есть такая ф-ия в Windows.pas:
function LookupPrivilegeValueW(lpSystemName, lpName: PWideChar; var lpLuid: TLargeInteger): BOOL; stdcall;
Интересует принцип ее работы.
Есть предположение, что это выглядит примерно так:

for i := Low(GLOBAL_PRIVILEGE_TABLE) to High(GLOBAL_PRIVILEGE_TABLE) do
 if IsEqualElement(lpName, GLOBAL_PRIVILEGE_TABLE[i]) then
  begin
   lpLuid := i;
   Break;
  end;


Где:
GLOBAL_PRIVILEGE_TABLE - некая глобальная таблица(список) привилегий.
IsEqualElement - некая функция сравнения PWCHAR с именем привилегии.

Верно ли это ?

(Во всяком случае, ReactOs`цы полагают, что дела обстоят именно так.
У них эта таблица вообще локальна в функции)

Иными словами:
Допустим, что Luid для SeCreateTokenPrivilege равен 2.
Могу ли я быть уверенной, что под любой системой (где есть эта привилегия),
при любых настройках и любых условиях, LookupPrivilegeValueW,
вызванная с параметром SeCreateTokenPrivilege вернет мне ту же двойку,
даже в военное время :)

P.S.
Очень сильно смущает то, что lpLuid объявлена как LARGE_INTEGER.
Наталкивает на мысли, что к "стандартному" значению Luid может быть добавлено что-то.
P.P.S.
И если предположение о существовании глобальной таблицы GLOBAL_PRIVILEGE_TABLE
верно, то как до нее "добраться" ?


 
Riply ©   (2009-06-15 21:46) [1]

> [0] Riply ©   (15.06.09 15:46)
> И если предположение о существовании глобальной таблицы GLOBAL_PRIVILEGE_TABLE
> верно, то как до нее "добраться" ?

Вот, что гасит MSDN:
The SeExports structure is a large external static SE_EXPORTS structure that defines a number
of well-known security constants for privilege values and security identifiers.

typedef struct _SE_EXPORTS {
// поскипано :)
} SE_EXPORTS, *PSE_EXPORTS;
extern NTKERNELAPI PSE_EXPORTS SeExports;

Comments
SeExports is a large external static SE_EXPORTS structure exported by Ntoskrnl.exe.


Так, что наще предположение оказалось правильным. ( Ну... почти правильным :) )


 
Игорь Шевченко ©   (2009-06-15 22:12) [2]


> Допустим, что Luid для SeCreateTokenPrivilege равен 2.
> Могу ли я быть уверенной, что под любой системой (где есть
> эта привилегия),
> при любых настройках и любых условиях, LookupPrivilegeValueW,
>  
> вызванная с параметром SeCreateTokenPrivilege вернет мне
> ту же двойку,


RTFS: ntddk.h

#define SE_MIN_WELL_KNOWN_PRIVILEGE       (2L)
#define SE_CREATE_TOKEN_PRIVILEGE         (2L)
#define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE   (3L)
#define SE_LOCK_MEMORY_PRIVILEGE          (4L)
#define SE_INCREASE_QUOTA_PRIVILEGE       (5L)

...


 
Riply ©   (2009-06-15 23:43) [3]

> [2] Игорь Шевченко ©   (15.06.09 22:12)

Спасибо :)



Страницы: 1 вся ветка

Текущий архив: 2011.02.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
15-1288297735
Юрий
2010-10-29 00:28
2011.02.06
С днем рождения ! 29 октября 2010 пятница


8-1209231401
Sound
2008-04-26 21:36
2011.02.06
mp3 format


8-1209465480
farrex
2008-04-29 14:38
2011.02.06
сравнение графических возможностей delphi с др. "редакторами"


2-1289796832
Василич
2010-11-15 07:53
2011.02.06
Обработка при прерывании программы.


2-1290080637
noob_one
2010-11-18 14:43
2011.02.06
Как добавить свою строчку в меню, которое появляется по