Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Privileges(msdn)

25K
11 апреля 2009 года
semiono
26 / / 31.08.2007
Код:
include '%fasm%\win32ax.inc'

section '.code' code readable executable
start:

        invoke SetLocalTime,lpSystemTime
        invoke ExitProcess,0

section '.data' data readable writeable

lpSystemTime SYSTEMTIME 1,1,1,1,1,1,1,1

data import

        library kernel32,'KERNEL32.DLL'
        import kernel32,ExitProcess,'ExitProcess',\
        SetLocalTime,'SetLocalTime'

end data


(Не ругайтесь сильно, не сильно можно)

На msdn сказанно "function enables the SE_SYSTEMTIME_NAME privilege before changing the system time"
Уже сразу очевидно, что в функцию некуда воткнуть привилегию, нет таких полей для неё!?
Хорошо следуя "For more information, see Running with Special Privileges"
видим http://msdn.microsoft.com/en-us/library/aa379306(VS.85,printer).aspx
где сразу куча "девайсов" которые попридумали MS. Имхо прочитав их все
станешь совсем старьий, причём забудешь, что вообще хотел сначала!

Однако, я понял кажись то, что без привилегиев в windows ни шагу нельзя! С чего же мне начать? Во-первых как часы всётаки крута ануть.
А второе, есть хоть примеры явные с приминением привилегий, токенсов и тукенсов :) Чтоб чтонибудь хоть вникнуть?

А может тут всё просто и я сам всё усложняю?
261
11 апреля 2009 года
ahilles
1.5K / / 03.11.2005
Чтобы добавить привилегию надо как минимум использовать следующие функции
OpenProcessToken
LookupPrivilegeValue
AdjustTokenPrivileges
смотри их описание

пример включения привилегии
Код:
struc _LUID_AND_ATTRIBUTES
{
    .Luid dq ?
    .Attributes dd ?
}

struc _TOKEN_PRIVILEGES
{
    .PrivilegeCount dd ?
    .Privileges _LUID_AND_ATTRIBUTES
}

TOKEN_QUERY = $0008;
TOKEN_ADJUST_PRIVILEGES = $0020;

SE_PRIVILEGE_ENABLED= $00000002;

.....

SeDeugPriv db 'SeDebugPrivilege',0
TokenPrivs _TOKEN_PRIVILEGES
TokenHandle dd 0

.....
    invoke GetCurrentProcess
    invoke OpenProcessToken, eax, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TokenHandle
    invoke LookupPrivilegeValue, 0, SeDeugPriv,  TokenPrivs.Privileges.Luid
    mov [TokenPrivs.PrivilegeCount], 1
    mov [TokenPrivs.Privileges.Attributes], SE_PRIVILEGE_ENABLED;
    invoke AdjustTokenPrivileges, [TokenHandle], FALSE, TokenPrivs, 0, 0, 0

....
  library kernel,'KERNEL32.DLL',\
    ......
      advapi, 'advapi32.dll'

  import advapi,\
     OpenProcessToken,'OpenProcessToken',\
     LookupPrivilegeValue, 'LookupPrivilegeValueA',\
     AdjustTokenPrivileges,'AdjustTokenPrivileges'
25K
12 апреля 2009 года
semiono
26 / / 31.08.2007
Спасибо!
У меня оказывается ошибка была >
lpSystemTime SYSTEMTIME 2001,1,1,1,1,1,0,0
Только в этом дело было.
Но всёже спрошу ещё, а что за условия должны быть для исполнения функции,
например SetLocalTime()? Вмысле кто получает привилегии - GetCurrentProcess,
это типа всё приложение имеется ввиду? Или на одну API...
хендл чего подставлять надо?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог