Win32 API - Получение прав SYSTEM в Windows 7

Ответить
Аватара пользователя
mrcnn

Win32 API - Получение прав SYSTEM в Windows 7

Сообщение mrcnn »

Написал программу



Как сделать чтобы у процессов, показывалась количество используемой памяти?



То есть как при открытии процесса функцией OpenProcess открыть его с правами доступа SYSTEM ?

h = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, p);



Изображение





Код:

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#pragma comment (lib, "wsock32.lib")
#pragma comment (lib, "Kernel32.lib")
#pragma comment (lib, "Psapi.lib")
#pragma comment (lib, "user32.lib")
#pragma comment (lib, "Gdi32.lib")
#pragma comment(lib, "advapi32.lib")
BOOL CALLBACK e2(HWND hwnd, LPARAM l)
{
char str[1024];
GetWindowText(hwnd, str, 1024);
printf("child: %x %s\n", hwnd, str);
return 1; 
}
BOOL CALLBACK e(HWND hwnd, LPARAM l)
{
char str[1024];
GetWindowText(hwnd, str, 1024);
printf("main: %x %s\n", hwnd, str);
EnumChildWindows(hwnd, (WNDENUMPROC) &e2, 0);
return 1;
}
int main(int argc, char* argv[])
{
DWORD b;
DWORD p[1024];
int i;
int r;
HANDLE h;
HMODULE m[1024];
DWORD b2;
int j;
char str[1024];
PROCESS_MEMORY_COUNTERS pm;
HWND hw;
HDC hdc;
SIZE x;
WIN32_FIND_DATA wf;
HANDLE hl;
HDC hdc2;
STARTUPINFO si;
PROCESS_INFORMATION pf;
int i1,i2,i3,i4;
SECURITY_ATTRIBUTES  sa1;
SECURITY_ATTRIBUTES  sa2;
char str2[1024];
char str3[1024];
char str4[1024];
SECURITY_INFORMATION sinf;
PSID ps1;
PSID ps2;
PACL pa1;
PACL pa2;
PSECURITY_DESCRIPTOR sd;
printf("error:%x %d\n", GetLastError(), GetLastError()); 
hl = FindFirstFile("*\0", &wf); 
printf("%s\n", wf.cFileName); 
while(FindNextFile(hl, &wf) ) 
printf("%s\n", wf.cFileName); 
hw = GetConsoleWindow(); 
hdc = GetDC(hw); 
hdc2 = GetDC(NULL); 
for(i1 = 30, i3 = 600; i1< 130; i1++, i3++) 
for(i2 = 30, i4 = 600; i2< 130;  i2++, i4++) 
SetPixel(hdc2, i3, i4, GetPixel(hdc2, i1, i2)); 
SetBkColor(hdc, RGB(0, 255, 0)); 
ScaleWindowExtEx(hdc, 5, 1, 5, 1, &x); 
ReleaseDC(hw, hdc);  
ReleaseDC(0, hdc2); 
printf("%d %d\n", x.cx, x.cy); 
SetConsoleTitle("_\0");
EnumProcesses(p, sizeof(p), &b);
r = b / sizeof(DWORD);
printf("r:%d\n", r);
for(i = 0;i < r;i++)
{
printf("Open: %d ", p[i]);
h = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, p[i]);
GetSecurityInfo(h, SE_UNKNOWN_OBJECT_TYPE, sinf, &ps1, &ps2, &pa1 ,&pa2, &sd);
ConvertSidToStringSid(&ps1, (LPSTR * ) &str2);
printf("%s\n", str2);
ZeroMemory(&pm, sizeof(pm));
GetProcessMemoryInfo(h, &pm, sizeof(pm) );
printf("\n");
printf("PageFaultCount:%x %d\n", pm.PageFaultCount, pm.PageFaultCount );
printf("PeakWorkingSetSize: %x %d\n", pm.PeakWorkingSetSize, pm.PeakWorkingSetSize / 1024);
printf("WorkingSetSize: %x %d\n", pm.WorkingSetSize, pm.WorkingSetSize / 1024);
printf("QuotaPeakPagedPoolUsage: %x %d\n", pm.QuotaPeakPagedPoolUsage, pm.QuotaPeakPagedPoolUsage / 1024);
printf("QuotaPagedPoolUsage: %x %d\n", pm.QuotaPagedPoolUsage, pm.QuotaPagedPoolUsage / 1024);
printf("QuotaPeakNonPagedPoolUsage: %x %d\n", pm.QuotaPeakNonPagedPoolUsage, pm.QuotaPeakNonPagedPoolUsage / 1024);
printf("QuotaNonPagedPoolUsage: %x %d\n", pm.QuotaNonPagedPoolUsage, pm.QuotaNonPagedPoolUsage / 1024);
printf("PagefileUsage: %x %d\n", pm.PagefileUsage, pm.PagefileUsage / 1024);
printf("PeakPagefileUsage: %x %d\n", pm.PeakPagefileUsage, pm.PeakPagefileUsage / 1024);
EnumProcessModules(h, m, sizeof(m),  &b2);
for(j = 0;j < ( sizeof(b2) /sizeof(HMODULE) ) ;j++)
{
GetModuleFileNameEx(h, m[j], str, 1024);
printf("%s\n", str);
}
CloseHandle(h);
printf("\n");
}
EnumWindows( (WNDENUMPROC) &e, 0);
ZeroMemory(&si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pf, sizeof(pf) );
ZeroMemory(&sa1, sizeof(sa1) );
ZeroMemory(&sa2, sizeof(sa2) );
sa1.nLength = sizeof(sa1);
sa1.bInheritHandle = 0;
sa2.nLength = sizeof(sa2);
sa2.bInheritHandle = 0;
if ( ! CreateProcess(0,argv[0],&sa1,&sa2, 0, 0, 0,0, &si, &pf) )
{
printf("error:%x %d\n", GetLastError(), GetLastError());
}
else
{
CloseHandle(pf.hProcess);
CloseHandle(pf.hThread);
}
 return 0;
}
Аватара пользователя
deviance

Re: Win32 API - Получение прав SYSTEM в Windows 7

Сообщение deviance »

mrcnn, права system можно получить у
PsExec



Цитата:



Using PsExec

-s Run the remote process in the System account.
Аватара пользователя
Nordek

Re: Win32 API - Получение прав SYSTEM в Windows 7

Сообщение Nordek »

mrcnn, Прокрутите колёсико мыши на себя - для того, чтоб внизу страницы увидеть колонку "Похожие темы": где далее увидите
одну
из похожих тем,
Доступ - получение абсолютных прав Администратора
, в теме так же имеются ещё ссылки на темы. Всё это говорит о том, что поиск работает.
Ответить

Вернуться в «Программирование и базы данных»