Прототип АПИшки: Код (Text): BOOL WINAPI DuplicateTokenEx( __in HANDLE hExistingToken, __in DWORD dwDesiredAccess, __in_opt LPSECURITY_ATTRIBUTES lpTokenAttributes, __in SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, __in TOKEN_TYPE TokenType, __out PHANDLE phNewToken ); Меня интересует, что надо подставлять в 4 и 5 параметр. В 4 параметре мне надо значение - SecurityDelegation. А в 5 параметре TokenPrimary. То есть не могу догнать синтаксически для ассемблера какие значения мне надо закидывать на стек. Облазил все заголовочные файлы и от студии и от масма ничего не нашел. И еще вопрос в догонку почему не работает такая последовательность? Код (Text): - OpenProcess - OpenProcessToken - CreateEnvironmentBlock - CreateProcessAsUser Ошибка происходит на CreateEnvironmentBlock. Он возвращает FALSE. Прочитал на RSDN, что должно быть вот так: Код (Text): - OpenProcess - OpenProcessToken - DuplicateTokenEx - CreateEnvironmentBlock - CreateProcessAsUser Объясните почемунадо делать так.
Не могу разобраться с CreateEnvironmentBlock. Все функции до нее отрабатывают нормально. Вот код до нее (FASM): Код (Text): ... uProcess PROCESSENTRY32 hOldToken dd ? hNewToken dd ? lpEnvironment dd ? hProc dd ? ... invoke OpenProcess,PROCESS_QUERY_INFORMATION, TRUE, [uProcess.th32ProcessID] mov [hProc],eax invoke OpenProcessToken, [hProc],0x8 + 0x2 + 0x1, hOldToken invoke DuplicateTokenEx,[hOldToken],20,NULL,3,1, hNewToken invoke CreateEnvironmentBlock,lpEnvironment,[hNewToken],TRUE ... А вот на ней всегда выдает FALSE. GetLastError показывает ошибку 203 - ERROR_ENVVAR_NOT_FOUND (The system could not find the environment option that was entered.). Не пойму, что я делаю не так. Весь код исполняется в сервисе под LocalSystem.
OpenProcessToken: "0x8 + 0x2 + 0x1", может or? DuplicateTokenEx: 20, может MAXIMUM_ALLOWED(0x02000000)?