Vous n'êtes pas identifié.
char *args2[512]; memset(args2,0,sizeof(args2)); execl(filePath,NULL);
Est ce que quelqu'un peut me dire pourquoi le execl ne fonctionne pas si je ne mets pas les 2 premieres lignes de code ???
Perso je ne sais po °!°
Hors ligne
bonne question, lol.
Déjà il faut mettre au moins un paramètre dans execl (le nom du fichier), c peut être pour ca que ca merde.
g pas la syntaxe exacte mais essaye avec execl(filePath, "Nom du fichier");
Hors ligne
The first argument, by convention, should point to the file name asso-
ciated with the file being executed. The list of arguments must be
terminated by a NULL pointer.
c'est ce que disait dada ...
ca marche avec les 2 lignes parce qu'il doit lire dans la mem a des edroits bizarres
Hors ligne
non non... j'ai pas mis tout le code, mais filePath="SW.EXE" par exemple... Et avec les 2 lignes ca marche, sans ca lance rien...
Hors ligne
tu as essayé en remplacant le 2eme parametre NULL par "SW" ?
Hors ligne
si je me souviens bien, oui...
en fait j'ai repris des sources d'explo, j'ai simplifie, progressivement, pour que ca ne fasse qu'executer qu'un prog... mais a chaque fois il faut que j'utilise un tableau suffisament grand avant le execl pour que ca marche...
Hors ligne
ça doit effectivement être un overflow ... qui doit écrire à des endroits bizarres, pile là où execl a besoin !! en tous cas moi ça fait longtemps que j'ai renoncé à essayer de corriger ces bugs bizarres, donc dis toi que tu pourras toujours emprunter la solution 2072! :mrgreen:
Hors ligne
Ce qui est inexplicable, c'est pourquoi des explo genre sysxpl4, Gexplorer et X-Win marchait en mettant simplement execl(filepath,null); alors que depuis 1 ans ca fonctionne plus!!! 8O jme suis toujours posé la question!
Hors ligne
eh bien ils étaient victimes d'overflow à caractère positif...
mais les 2 premiers arguments doivent être le chemin complet du programmes genre execl("L:swf.exe". "L:swf.exe", NULL);
(L'argument 0 d'un programme est toujours son propre chemin complet)
Pour connaître le chemin de ton programme tu peux regarder argv[0], il te faut un main de ce type là:
int main(int argc, char *argv[])
Hors ligne
tu as raison 2072 argv[0] doit être différent de NULL, mais en ce qui concerne son contenu, il ne contient pas tjrs le path en entier de l'exe, c pas trop suivi par tout le monde (cf Windows, lol)
Hors ligne
essayez ça:
execl("L:swf.exe". "swf.exe", NULL);