TROJAN SE CONTROLANT PAR L'IRC

Messages postés
409
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011
- - Dernière réponse : kollibar
Messages postés
45
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
31 janvier 2006
- 8 sept. 2004 à 10:31
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/26007-trojan-se-controlant-par-l-irc

Afficher la suite 
kollibar
Messages postés
45
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
31 janvier 2006
-
salut!

juste un petit comment,

sous windows Xp, les fonctions pour eteindre le pc et pour desactivé ctrl+alt+suppr ne fonctionne pas!

pour eteindre l ecran il fautr rajouter avant la fontion ExitWindows(c'est pour avoir les privilèges pour eteindre le pc):

/* objet version windows */
OSVERSIONINFOEX osversion;
ZeroMemory (&osversion, sizeof(OSVERSIONINFOEX));
osversion.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
if(!(GetVersionEx ((OSVERSIONINFO *)&osversion))) {
/* si echec de la recuperation de version => recuperation sans les info complementaire */
osversion.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
if (!GetVersionEx ((OSVERSIONINFO *)&osversion)) return false;
}
if (osversion.dwPlatformId == VER_PLATFORM_WIN32_NT) {
// noyau NT

/* ajout des privileges pour pouvoir eteindre l'ordinateur
sur les systemes NT seulement */

HANDLE hToken;
TOKEN_PRIVILEGES tokenprivilege;

// recup un Token pour ce process

if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) return( FALSE );

// recup le LUID du privilege d'arret

LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tokenprivilege.Privileges[0].Luid);

tokenprivilege.PrivilegeCount = 1; // one privilege to set
tokenprivilege.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

//recupere les privileges pour areter l ordinateur

AdjustTokenPrivileges(hToken, FALSE, &tokenprivilege, 0, (PTOKEN_PRIVILEGES)NULL, 0);

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



pour le ctrl+alt+suppr je sais pas

Sinon tu pourrais organiser ton prog de meilleur facon:

commande=??

switch(commande) {
case "!time" : time();break;
case "!flashwin" : flashwin();break;
.......
}

la lecture en serait plus simple et tu pourrais mettre tes fonctions ds des fichiers a part.
cs_shown
Messages postés
40
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
24 décembre 2007
-
Merci pour tes commentaires NitRic jvais essayer d'arranger tout ca mais ca va me prendre un peu de temps : le temps d'apprendre :)
Surtout pour valider les valeurs retournées ça j'ai pas pris l'habitude de le faire, c'est un mauvais pli...
NitRic
Messages postés
409
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011
-
Essaie, manuellement, de créer des répertoires et/ou fichiers avec, au total, plus de 260 caractères ...

ex:
Cré un répertoire sur ton bureau, entre dedans et cré un nouveau répertoire, entre dans ce dernier et cré un nouveau répertoire et ainsi de suite ...

Tu auras une erreur un moment donné; Nom de fichier trop long.

la define MAX_PATH n'existe pas pour rien, utilise la, elle est très utile.

Moi le maximum que j'ai réussi à faire c'est 247 caractères pour un nom de fichier incluant les noms des répertoires ou il ce trouvait, sous NTFS.

MAX_PATH(260) est amplement suffisant :)

char path[ MAX_PATH + 1];

GetModuleFileName( NULL, path, MAX_PATH ); /* parfait! */

Si `jamais` tu veux un _bon_ conseil, valide les valeurs retournées par tes fonctions, la valeur de tes variables, ...

Tu pourais aussi te créer une petite routine pour gérer les commandes recues, cette fonction pourait te retourner un entier(signé ou non) ainsi que les paramètres/commandes/... et avec cet entier tu fais un petit switch() dans lequel tu `call` les routines appropriées selon la commande recu en leurs passant les paramètres/commandes/...

En passant, tu as une tonne d'include inutile!
winsock2.h inclu déjà windows.h et windows.h inclus winbase.h, winuser.h, windef.h, winresrc.h, wingdi.h, winreg.h, etc ... Te casse pas la tête pour rien =P
#niclude <winsock2.h> /* cela suffit :) */

Tu devrais, t'en qu'a apprendre, apprendre à dev de facon modulaire, le fait d'avoir plusieurs .c/.cpp/.h/.hpp/.lib/..., en autant qu'il/elle soit utile, n'est pas méchant, inutile, stupide, malpropre, ... tout au contraire, c'est parfait, même pour un projet aussi petit que le tient, ca rend le code beaucoup plus `propre`, lisible, structuré, ...

Bref, c'était mon avis sur le sujet :)


~(.:: NitRic ::.)~