Comment fonctionne createprocess car elle a chaque fois elle revoi false ?
PROCESS_INFORMATION piProcInfo;
STARTUPINFO siStartInfo;
BOOL bSuccess = FALSE;
// Set up members of the PROCESS_INFORMATION structure.
ZeroMemory(&piProcInfo, sizeof(PROCESS_INFORMATION));
// Set up members of the STARTUPINFO structure.
// This structure specifies the STDIN and STDOUT handles for redirection.
ZeroMemory(&siStartInfo, sizeof(STARTUPINFO));
siStartInfo.cb = sizeof(STARTUPINFO);
siStartInfo.hStdError = g_hChildStd_OUT_Wr;
siStartInfo.hStdOutput = g_hChildStd_OUT_Wr;
siStartInfo.hStdInput = g_hChildStd_IN_Rd;
siStartInfo.dwFlags |= STARTF_USESTDHANDLES;
LPCWSTR cmd = (LPCWSTR)L"cmd.exe";
// Create the child process.
bSuccess = CreateProcess(cmd,
NULL, // command line
NULL, // process security attributes
NULL, // primary thread security attributes
TRUE, // handles are inherited
CREATE_NO_WINDOW, // creation flags
NULL, // use parent's environment
NULL, // use parent's current directory
&siStartInfo, // STARTUPINFO pointer
&piProcInfo); // receives PROCESS_INFORMATION
// If an error occurs
if (!bSuccess)
return -1;
- Edité par JEANBAPTISTECOMTE1 14 décembre 2022 à 19:39:10
Je pense que ça serait plus simple de nous expliquer d'abord ce que tu souhaites faire car ça parait farfelu.
C'est surtout que là, on est sur du code clairement spécifique à windows.
Cela peut ne poser aucun problème particulier ... jusqu'au jour où l'on voudra porter l'application sous linux, android ou mac. Et là, il faudra rendre le code encore plus imbitable pour en utilisant de "ruses de sioux" comme des conditions préprocesseur afin de ne garder que la partie correspondant à la cible en question.
Quand on sait qu'il y a ** sans doute ** moyen d'obtenir le même résultat d'une manière "standard" (ou proche de l'être) en laissant tous ces problèmes aux développeurs des bibliothèques utilisées, on se dit qu'il est quand même dommage d'essayer de recréer une roue qui sera forcément carrée alors que la roue bien circulaire existe déjà
Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
Enfaite j'aimerai comprendre comment fonctionne un reverse shell, en gros j'aimerais creer un sous process "cmd" et envoyé des commandes via une socket
C'est potentiellement très dangereux et il existe déjà toute une palanqué de "produit" type rssh et consort, sans compter les systèmes "natifs" à l'OS comme WMI etc...
Déjà que les outils natifs aux OS ou les produits OpenSoure (donc relu par what milliers de dev) comme rssh se font régulièrement démonter la gueule par des hackers du dimanche.
Vous voulez vraiment faire partie du club des fabricants de backdoor ???
Utilisez plutôt les systèmes natifs de l'OS ou des produits qui le font déjà.
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
"Vous voulez vraiment faire partie du club des fabricants de backdoor ???" Oui car je veux comprendre comment ca fonctionne car je souhaite faire de la cyber securité
Bin, j'espère pas avec un "vrai" shell. Sinon, on n'est bon pour l'exploite de programme shell à distance. (ils n'ont pas été fait pour)
A part prouver qu'une "solution" scabreuse donne de jolies portes d'entrée aux attaquants, je vois pas ce que vous apprendrez.
"cmd.exe" est truffé de faiblesses (les backslash à répétition qui font crasher en mode yolo, etc...) donc faire passe-plat vers lui, c'est vraiment pas une idée de génie.
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
Le Working Directory n'a rien à voir avec le chemin vers le fichier contenant "l'image" du processus.
C'est le machin que vous renseignez avec le paramètre "lpCurrentDirectory" de CreateProcess.
Dans vos exemples, vous ne semblez pas le spécifié, c'est donc que le processus créé hérite de la valeur de son processus père, au moment de la création.
Quel est donc la valeur du "Working Directory" pour le rejeton ?
L'interprétation des commandes, des chemins vers les fichiers, les droits, etc... sont fonction, au moins partiellement de valeur du "Working Directory".
Franchement, si vous ne maîtrisez pas ça, vous avec 100% de faire un programme qui est une passoire sécuritaire.
Vous êtes en train d'apprendre à faire ce qu'il ne faut pas faire.
Apprenez à utiliser les bons outils. Déjà qu'avec ça, on n'est pas à l'abri d'une exploite, mais un remote shell fait par un newbie/rookie (no offense), c'est du suicide.
S vous persistez, maîtrisez un minimum les concepts et tentez de faire la même chose mais en local : créer/lancer un CMD avec le même utilisateur, le même working directory, etc... : vous aurez vraisemblablement les mêmes messages sur la sortie standard mais vous disposerez aussi de la sortie erreur.
Moi, en fainéant, j'utiliserais un outil comme Process Monitor pour savoir quel fichier votre bidule cherche et semble avoir trouvé.
Mais bon, pour un apprenti black/gray/white hat, mentionner "Process Monitor", c'est comme parler des jouets qu'on avait à la maternelle.
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
createprocess
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Si vous ne trouvez plus rien, cherchez autre chose.
git is great because Linus did it, mercurial is better because he didn't.