begin process at 2012 02 09 08:28:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > ANTIKILL : PROTÉGEZ LES PROCESSUS DES "KILL" VENANT DES AUTRES PROCESSUS (API WIN32)

ANTIKILL : PROTÉGEZ LES PROCESSUS DES "KILL" VENANT DES AUTRES PROCESSUS (API WIN32)


 Information sur la source

Note :
6,75 / 10 - par 4 personnes
6,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Expert Date de création :26/11/2003 Vu / téléchargé :7 680 / 856

Auteur : kptn

Ecrire un message privé
Commentaire sur cette source (22)
Ajouter un commentaire et/ou une note

 Description

AntiKill permet d'empêcher les TerminateProcess venant des autres programmes (TaskManager étant aussi un programme, il ne pourra donc plus tuer les processus sans leur demander avant)

Ce programme a été fait pour contrer un virus qui sévit en ce moment (j'connais pas encore son p'tit nom). Il tue certain processus avant qu'on ait le temps de s'en servir!! (notamment les antivirus, ou encore regedit)

Je met dans ici juste le code permettant de protéger le processus désiré. Pour l'appli complète, regardez dans le zip (c'est fait sous C++ Builder, mais c'est facilement transferable pour d'autres compilateurs)

Source

  • //---------------------------------------------------------------------------
  • DWORD SetPermissions(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,
  • DENY_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;
  • }
//---------------------------------------------------------------------------

DWORD  SetPermissions(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,
        DENY_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;
}

 Conclusion

Je voudrais juste ajouter un remerciement à BruNews pour la procédure d'énumération des processus sans psapi.dll


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   AntiKill
    • AntiKill.bprTélécharger ce fichier [Réservé aux membres club]2 948 octets
    • AntiKill.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier718 octets
    • AntiKill.dskTélécharger ce fichier [Réservé aux membres club]3 936 octets
    • AntiKill.exeTélécharger ce fichier [Réservé aux membres club]399 360 octets
    • AntiKill.resTélécharger ce fichier [Réservé aux membres club]876 octets
    • Main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier5 699 octets
    • Main.dfmTélécharger ce fichier [Réservé aux membres club]1 214 octets
    • Main.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 030 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture AJOUTER UN SKIN À UNE APPLI - API WIN32
Source avec Zip Source avec une capture MINI EXPLORATEUR : COMMENT NAVIGUER DANS LES RÉPERTOIRES AVE...
Source avec Zip Source avec une capture METTRE DE LA COULEUR DANS LES BOUTONS
Source avec Zip Source avec une capture RENDRE SON APPLICATION SKINNABLE
Source avec Zip P'TIT PROG POUR QUITTER WINDOWS ENTIÈREMENT EN API WIN32

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

Commentaires et avis

Commentaire de BlackGoddess le 26/11/2003 17:51:41

super ca :)

je suppose qu'il faut avoir les droits admin pour executer ce code ?

sinon est-ce que un processus ayant les droits admin peut changer les droits d'un processus ayant les droits localsystem ?

Commentaire de kptn le 27/11/2003 09:38:52

Pour exécuter ce code, y a pas besoin de droit admin. Tu peux protéger n'importe quel processus de ton système, quelque soit tes droits.

A noter tout de même que sur la version XP, le Task Manager arrive tout de même à tuer les processus, contrairement à un TerminateProcess classique.

Commentaire de BlackGoddess le 27/11/2003 17:50:07

ce droit protege tout un processus contre un kill venant de n'importe quel autre processus, ou ce de droit empeche un processus de killer n'importe quel autre processus ?

Commentaire de kptn le 27/11/2003 18:02:08

Ta première hypothèse est la bonne :
Il protege un processus, celui que tu veux (suffit d'avoir son identifiant), des kill venant d'autres processus.

Il n'empèche aucunement le processus cible de vouloir killer les autres processus

Commentaire de BlackGoddess le 27/11/2003 20:49:24

bien merci bcp :)

Commentaire de c3rb3r3 le 12/03/2004 19:04:14

Dommage qu'il ne résiste pas à pskill ...
Mais dans l'ensemble, le concepte est pas mal du tout.
Merci à toi :]

Commentaire de Roudy le 02/05/2004 21:12:17

c ou ce qu'on doit adder pour pouvoir compiler je retrouve plein d'erreur comme :

: error C2065: 'EXPLICIT_ACCESS' : undeclared identifier
: error C2146: syntax error : missing ';' before identifier 'ea'
: error C2065: 'ea' : undeclared identifier
: error C2059: syntax error : '{'
: error C2143: syntax error : missing ';' before '{'
: error C2065: 'DENY_ACCESS' : undeclared identifier
: error C2065: 'NO_INHERITANCE' : undeclared identifier
: error C2059: syntax error : '{'
: error C2143: syntax error : missing ';' before '{'
: error C2065: 'NO_MULTIPLE_TRUSTEE' : undeclared identifier
: error C2065: 'TRUSTEE_IS_SID' : undeclared identifier
: error C2065: 'TRUSTEE_IS_USER' : undeclared identifier
: error C2143: syntax error : missing ';' before '}'
: error C2065: 'SetEntriesInAcl' : undeclared identifier
: error C2065: 'SetSecurityInfo' : undeclared identifier
: error C2065: 'SE_KERNEL_OBJECT' : undeclared identifier

ou sinon

fatal error C1083: Cannot open include file: 'vcl.h': No such file or directory

mais je trouve pas dans le zip les fichier necessaire

Commentaire de kptn le 04/05/2004 14:10:02

Roudy, j'avais précisé que le code que j'avais fourni a été compilé sous C++ Builder de Borland, et le fichier vcl.h provient de ce logiciel. Donc, si tu veux utiliser mon code, soit tu utilises builder, soit tu converti le code pour le compilo que tu utilises, sachant que la fonctin SetPermission qui est la fonction principale de ce code est tout a fait utilisable sous un autre compilo tel quel.

Commentaire de kptn le 04/05/2004 14:11:32

Roudy, j'avais précisé que le code que j'avais fourni a été compilé sous C++ Builder de Borland, et le fichier vcl.h provient de ce logiciel. Donc, si tu veux utiliser mon code, soit tu utilises builder, soit tu converti le code pour le compilo que tu utilises, sachant que la fonctin SetPermission qui est la fonction principale de ce code est tout a fait utilisable sous un autre compilo tel quel.

Commentaire de Roudy le 04/05/2004 23:47:57

ok parfait pour le compilo
d,apres toi mes erreur comme celle la
: error C2065: 'EXPLICIT_ACCESS' : undeclared identifier
: error C2146: syntax error : missing ';' before identifier 'ea'
proviendrait a cause que j,ai pas utiliser le bon compilateur?

Commentaire de kptn le 05/05/2004 09:51:19

Tu as bien fais de me faire remarquer cette erreur, car j'ai oublié une petite précision et pas des moindres : tout ce qui concerne la sécurité (Platform SDK : Security) n'est accessible qu'aux windows à noyau NT et supérieur, donc WinNT, 2k, et XP. Donc si tu utilises win9x, c'est rapé.
Sinon, soit les includes présents suffisent (car ils se lient directement aux bonnes librairies) soit tu peux directement faire
#include &lt;Accctrl.h&gt;
Et si tu ne possèdes pas ce fichiers at que, pourtant, tu as bien winNT ou supérieur, c'est que tu n'as pas les headers de la platform SDK complète.

Commentaire de Roudy le 05/05/2004 16:09:51

ok parfait merci, en effet c'etait bien le include
j'ai du ajouter aussi #include &lt;Aclapi.h&gt; pour le SetSecurityInfo

Commentaire de BlackGoddess le 14/10/2004 14:29:19

Dommage qu'il ne résiste pas à pskill ... >> g encore rien trouvé qui lui resiste a lui :p

Commentaire de Nebula le 15/10/2004 01:21:56

Pas mal comme protection mais facilement contournable ;-)

Commentaire de Nebula le 15/10/2004 14:32:29

Voir ici pour le contournement dont je parlais :
http://www.cppfrance.com/code.aspx?ID=26858

Commentaire de kptn le 28/10/2004 15:26:59

effectivement à l'époque où j'avais écris ces lignes, je n'avais pas fait gaffe à ce contournement dont tu parles... Depuis je m'étais amusé à m'octroyer tous les droits et je pouvais tuer n'importe quel process, services compris, accéder à n'importe quel thread... Mais bon, ça permet qd même de faire découvrir des api que l'on utilse peu ^^

Commentaire de lombredudragon le 10/09/2005 22:05:14

et si on met le flag SECURITY_NT_AUTHORITY a la place de SECURITY_WORLD_SID_AUTHORITY cachange quoi   ??

Commentaire de taye78 le 15/04/2007 00:47:57

http://msdn.microsoft.com

ou

http://www.codingz.info/ff-en

Commentaire de myavast le 07/09/2007 10:06:49

Salut

J'aimerai savoir comment ajouter se code a mon project vb.net ?
Aussi ou es que on presise le nom du processus a proteger ?

Merci

Al968

Commentaire de kptn le 11/09/2007 10:57:48

Sous vb.net, je ne sais pas, je ne m'en suis jamais servi... mais si c'est comme le vb d'antan, il te faudra exporter les fonctions depuis les dll systèmes et mettre le code dans le style vb. (Il y a pas mal d'exemple dans le coin de code vb utilisant des fonctions systèmes).

Pour ce qui est du nom du processus, ici il s'agit du PID, c'est à dire du numéro d'identification du processus et non de son nom, vu que tu peux avoir plusieurs processus portant le même nom.
Il te faut donc énumérer les processus (tu as des sources qui traines permettant l'énumération de processus), ce qui te permettra de faire le lien entre le nom du processus et son PID)
Dans le cas où il s'agit de ton appli, tu peut utiliser GetCurrentProcessId.

En espérant que cela t'aide un peu...

Commentaire de ernest_hemingway07 le 11/09/2010 14:47:31

bonjour moi j'ai tradui ce code en delphi mai il ne marche pas quelqun peu m'aider

Commentaire de daminator2 le 10/11/2010 10:52:59 8/10

personne n'aurai une version "anti any "kill any proocessus"" ?
comment pourai-je adapter ce code a un de mes programmes ?

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales