bonjours
voila je suis en train de programmer une petite application sur l'injection de dll.
Hors j'ai remarqué que j'ai un problème de droit d'accès sur les processus système malgré une élévation du privilège en DEBUG.
D'après mes souvenirs je n'avais aucun soucis avec mon ancien pc mais qui était en win XP.
J'ai donc créer un petit bout de code pour vérifier accessibilité de tout mes processus en cours,voila le bout de code:
Code C/C++ :
#include <windows.h>
#include <iostream>
#include <tlhelp32.h>
HANDLE process;
BOOL SetDebugPrivileges(VOID)
{
DWORD dwPID;
HANDLE hProcess;
HANDLE hToken;
LUID Luid;
TOKEN_PRIVILEGES tpDebug;
dwPID = GetCurrentProcessId();
if ((hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID)) == NULL) return FALSE;
if (OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, &hToken) == 0) return FALSE;
if ((LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &Luid)) == 0) return FALSE;
tpDebug.PrivilegeCount = 1;
tpDebug.Privileges[0].Luid = Luid;
tpDebug.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if ((AdjustTokenPrivileges(hToken, FALSE, &tpDebug, sizeof(tpDebug), NULL, NULL)) == 0) return FALSE;
if (GetLastError() != ERROR_SUCCESS) return FALSE;
CloseHandle(hToken);
CloseHandle(hProcess);
return TRUE;
}
int main()
{
HANDLE SnapShot;
PROCESSENTRY32 Process;
int Ok=0;
int Echec=0;
bool I;
if (SetDebugPrivileges)
{
printf("Elevation privilege ok\n\n");
}
else
{
printf("Elevation privilege erreur\n");
}
SnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
Process.dwSize = (DWORD) sizeof(PROCESSENTRY32);
I = Process32First(SnapShot, &Process);
do
{
printf("%s:",Process.szExeFile );
process=OpenProcess(PROCESS_ALL_ACCESS,false,(DWORD)Process.th32ProcessID );
if (process!=NULL)
{
printf("\tOK\n");
Ok++;
}
else
{
printf("\tECHEC\n");
Echec++;
}
I = Process32Next(SnapShot, &Process);
}
while ( I );
CloseHandle(SnapShot);
printf("Nombre de processus exploitable:%d\n",Ok);
printf("Nombre de processus avec acces refuser: %d\n",Echec);
system("pause");
return 0;
}
Avec se bout de code, il n'y a aucune différence de résultat avec l'élévation de privilège ou sans donc se qui me fait penser a une erreur dans la fonction SetDebugPrivilege malgré que celle si me revoie true.
Ma question est la suivante es que quelqu'un sait si le niveau de sécurité des processus system tel que csrss.exe ont été augmenter depuis vista ou seven par rapport a windows xp
ou es qu'il y a une erreur dans mon code.
merci d'avance pour vos reponce.
bonne journée a tous