Terminer un Processus qui run en systeme

cs_Roudy Messages postés 25 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 15 mai 2004 - 9 mai 2004 à 22:56
cs_Roudy Messages postés 25 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 15 mai 2004 - 15 mai 2004 à 17:58
Salut j'aimerais savoir comment terminer un processus qui run en system car la facon normal de terminer un processus marche sur ceux la,

j'ai tenter de modifier les droit de sécurité a l'aide d'un code source que j,ai trouver sur le forum mais sa ne marche pas le message d'errreur ne me retourne pas ERROR_SUCESS

j,ai essayer en changeant les droit avec sa :
 DWORD setpermission(int pid)
 {
DWORD dwErr;
    HANDLE hpWriteDAC = OpenProcess(WRITE_DAC, FALSE, pid);
    dwErr = GetLastError();

    SID world = { SID_REVISION, 1, SECURITY_WORLD_SID_AUTHORITY, 0 };

    EXPLICIT_ACCESS ea =
    {
        PROCESS_TERMINATE,
        SET_ACCESS,
        NO_INHERITANCE,
        {
            0, NO_MULTIPLE_TRUSTEE,
            TRUSTEE_IS_SID,
            TRUSTEE_IS_USER,
            reinterpret_cast<char*>( &world )
        }
    };
    ACL* pdacl = 0;
    dwErr = SetEntriesInAcl( 1, &ea, 0, &pdacl );

    dwErr = SetSecurityInfo( hpWriteDAC, SE_KERNEL_OBJECT,
                             DACL_SECURITY_INFORMATION,
                             0, 0, pdacl, 0 );

    LocalFree( pdacl );
    return dwErr;
 }


j'ai essayer aussi en modifiant SET_ACCESS par GRANT_ACCESS mais j,ai pas eu plus success
Si quelqu'un a une idée sa serait apprecier,
merci :)

4 réponses

mirlaine Messages postés 32 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 24 août 2005
14 mai 2004 à 01:13
salut
as tu essayer douvrir ton process avec openprocess
avec les droits PROCESS_TERMINATE
si tu recoi un message access denied c'est que tu a oublier dobtenir les droits sedebugprivilege

c'est le mem probléme lors que tu list les process en cours
jespere tavoir aider
a++
0
cs_Roudy Messages postés 25 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 15 mai 2004
14 mai 2004 à 04:56
ouais sa je suis au courant
mais justement c sa que je veux savoir comment obtenir les droits necessaire
j'ai reussi a trouver une méthode qui me permet de killer kelke process en system sa depend lesquel
en envoyant par winexec la lign suivante : ntsd -p [pid] -c "q"
0
mirlaine Messages postés 32 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 24 août 2005
15 mai 2004 à 02:17
tien regarde ca

BOOL LoadPrivilege(const char * Privilege)
{
HANDLE hToken;
LUID SEDebugNameValue;
//SE_SECURITY_NAME
//SE_DEBUG_NAME
TOKEN_PRIVILEGES tkp;

if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
{
fprintf(stderr, "OpenProcessToken, Erreur: %s", get_error());
return FALSE;
}

if (!LookupPrivilegeValue(NULL, Privilege, &SEDebugNameValue))
{
fprintf(stderr, "LookupPrivilegeValue, Erreur: %s", get_error());
CloseHandle(hToken);
return FALSE;
}

tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = SEDebugNameValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof tkp, NULL, NULL))
{
fprintf(stderr, "LookupPrivilegeValue, Erreur: %s", get_error());
CloseHandle(hToken);
return FALSE;
}

CloseHandle(hToken);

return TRUE;
}

void main()
{
if(!LoadPrivilege(SE_DEBUG_NAME))
return;
...

ca devrai taider a+
}
0
cs_Roudy Messages postés 25 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 15 mai 2004
15 mai 2004 à 17:58
ouais c le genre de truck que je cherchais :)
merci
0
Rejoignez-nous