Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "WinAPI";
Поточний архів: 2002.12.23;
Завантажити: [xml.tar.bz2];

Вниз

SeDebugPrivilege Знайти схожі гілки


Frostik   (2002-11-05 15:26) [0]

Привіт усім!
У прикладі по ВІНАП дано опис привілеї "SeDebugPrivilege", там написана функція, якої
передається PID, привілей яку треба дати і параметр типу BOOL, так ось:
в Дельфі так не виходить, тому що SE_DEBUG_NAME ніде не вказана і при спробі його впіхать компілер
пише, що це невідома змінна ... Що робити? Або, може бути, треба по-іншому писАть?
Всяким моралістам кажу відразу: це НЕ ТРОЯН І НЕ якась гидота, просто звичайного TaskMgr.exe мені
мало :( Від нього захиститися простіше, ніж два байти переслати ... Наприклад у мого друга висить процес
"R_server" я, в принципі, здогадуюся, що це таке, але при спробі вбити мені винда каже, що
Access is denided (у нього, як і у мене, англійська Win2000 Advanced Server) ... Знаю, що є проги
які можуть вбивати всі процеси, якщо хто таку знає, киньте лінк, плз ... Але все ж Хотц самому ...

Заздалегідь вдячний...



Игорь Шевченко   (2002-11-05 15:54) [1]

kill.exe з Windows 2000 resource kit



Набережных С.   (2002-11-05 21:18) [2]

SE_DEBUG_NAME = "SeDebugPrivilege" # 0



Frostik   (2002-11-06 19:01) [3]

Гаразд, простіше:
хто може перевести цей код з С ++ на Дельфі?
Заранее спасибо!

А ось і обіцяний код:

// початок

#define RTN_OK 0
#define RTN_USAGE 1
#define RTN_ERROR 13

#include <windows.h>
#include <stdio.h>

BOOL SetPrivilege (

HANDLE hToken, // token handle
LPCTSTR Privilege, // Privilege to enable / disable
BOOL bEnablePrivilege // TRUE to enable. FALSE to disable
);

void DisplayError (LPTSTR szAPI);

int main (int argc, char * argv [])
{
HANDLE hProcess;
HANDLE hToken;
int dwRetVal = RTN_OK; // assume success from main ()

// show correct usage for kill
if (argc! = 2)
{
fprintf (stderr, "Usage:% s [ProcessId] \ n", argv [0]);

return RTN_USAGE;
}

if (! OpenProcessToken (
GetCurrentProcess (),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
& hToken
)) Return RTN_ERROR;

// enable SeDebugPrivilege
if (! SetPrivilege (hToken, SE_DEBUG_NAME, TRUE))
{
DisplayError ( "SetPrivilege");

// close token handle
CloseHandle (hToken);

// indicate failure
return RTN_ERROR;
}

// open the process

if ((hProcess = OpenProcess (
PROCESS_ALL_ACCESS,
FALSE,
atoi (argv [1]) // PID from commandline
)) == NULL)
{
DisplayError ( "OpenProcess");
return RTN_ERROR;
}

// disable SeDebugPrivilege
SetPrivilege (hToken, SE_DEBUG_NAME, FALSE);

if (! TerminateProcess (hProcess, 0xffffffff))
{
DisplayError ( "TerminateProcess");
dwRetVal = RTN_ERROR;
}

// close handles

CloseHandle (hToken);
CloseHandle (hProcess);

return dwRetVal;
}

BOOL SetPrivilege (
HANDLE hToken, // token handle
LPCTSTR Privilege, // Privilege to enable / disable
BOOL bEnablePrivilege // TRUE to enable. FALSE to disable
)
{
TOKEN_PRIVILEGES tp;
LUID luid;
TOKEN_PRIVILEGES tpPrevious;
DWORD cbPrevious = sizeof (TOKEN_PRIVILEGES);

if (! LookupPrivilegeValue (NULL, Privilege, & luid)) return FALSE;

//
// first pass. get current privilege setting
//
tp.PrivilegeCount = 1;
tp.Privileges [0] .Luid = luid;
tp.Privileges [0] .Attributes = 0;

AdjustTokenPrivileges (
hToken,
FALSE,
& Tp,
sizeof (TOKEN_PRIVILEGES),
& TpPrevious,
& cbPrevious
);

if (GetLastError ()! = ERROR_SUCCESS) return FALSE;

//
// second pass. set privilege based on previous setting

//
tpPrevious.PrivilegeCount = 1;
tpPrevious.Privileges [0] .Luid = luid;

if (bEnablePrivilege) {
tpPrevious.Privileges [0] .Attributes | = (SE_PRIVILEGE_ENABLED);
}
ще {
tpPrevious.Privileges [0] .Attributes ^ = (SE_PRIVILEGE_ENABLED &
tpPrevious.Privileges [0] .Attributes);
}

AdjustTokenPrivileges (
hToken,
FALSE,
& TpPrevious,
cbPrevious,
NULL,

NULL
);

if (GetLastError ()! = ERROR_SUCCESS) return FALSE;

return TRUE;
}

void DisplayError (
LPTSTR szAPI // pointer to failed API name
)
{
LPTSTR MessageBuffer;
DWORD dwBufferLength;

fprintf (stderr, "% s () error! \ n", szAPI);

if (dwBufferLength = FormatMessage (
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
GetLastError (),

GetSystemDefaultLangID (),
(LPTSTR) & MessageBuffer,
0,
NULL
))
{
DWORD dwBytesWritten;

//
// Output message string on stderr
//
WriteFile (
GetStdHandle (STD_ERROR_HANDLE),
MessageBuffer,
dwBufferLength,
& DwBytesWritten,
NULL
);

//

// free the buffer allocated by the system
//
LocalFree (MessageBuffer);
}
}




Внук   (2002-11-06 19:12) [4]

Я можу...
Але не буду. Питання задати - це одне, а виконувати безкоштовну (хоч і не складну) роботу - це з іншої серії :)



Frostik   (2002-11-06 20:01) [5]

Дорогий Онук, по-моєму цей форум (як і всі інші) був створений для того, щоб ДОПОМАГАТИ
людям ... На знання грошей мені не шкода, тобто якби ти жив в Саратові, то я б тобі
заплатив за цю допомогу, але швидше за все ми знаходимося в різних містах ...
Мораль цієї байки така: якщо лінь (ну або ще чого) відповідати, якось не захаращувати форум, плз ...



Набережных С.   (2002-11-06 21:20) [6]

> Frostik © (06.11.02 20:01)

Два твоїх останніх поста - це і є захаращення форуму. А Онук абсолютно прав. Форуми - щоб бажаючі могли допомогти тим, кому допомогти можна. А не для того, щоб халяву отримувати.



Василий2   (2002-11-07 21:17) [7]

Якщо треба хороший TaskMgr, то качай ProcessExplorer (www.sysinternals.com)! Вбиває всі ПРОЦЕСИ, навіть системні (крім "System Idle Process" і "System") !!!



Игорь Шевченко   (2002-11-08 10:55) [8]

Frostik © (06.11.02 20:01)


> Гаразд, простіше:
> Хто може перевести цей код з С ++ на Дельфі?

....

> Мораль цієї байки така: якщо лінь (ну або ще чого) відповідати,
> Щось не захаращувати форум, плз ...

Таблеток від нахабства вам лікар не прописував?

Ви ця ... привчайтесь, що за послуги треба платити. Або робити щось самостійно. С, наприклад, вивчити, щоб самому перевести, а не просити людей напружуватися.

І наостанок, почитайте напам'ять
http://ln.com.ua/~openxs/articles/smart-questions-ru.html



McSimm   (2002-11-08 11:01) [9]


> Цей форум (як і всі інші) був створений для того, щоб ДОПОМАГАТИ людям ...

Тому, будь добрий, залиш свої замашки, напружся і допоможи.

:-)



сторінки: 1 вся гілка

Форум: "WinAPI";
Поточний архів: 2002.12.23;
Завантажити: [xml.tar.bz2];

Вгору





Пам'ять: 0.59 MB
Час: 0.049 c
1-74823
SI-riuss
2002-12-10 11:35
2002.12.23
клавіша TAB


14-74933
сатир
2002-12-01 20:53
2002.12.23
Вихідні на шару?


1-74730
Витьок
2002-12-14 10:39
2002.12.23
TTreeView


14-74951
Wasiliy
2002-12-03 03:35
2002.12.23
погомоніти


3-74562
дослідник
2002-12-04 13:29
2002.12.23
перекрити DBGrid





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська