2 fichiers en 1 (EXE + SYS= EXE)

Résolu
cs_tucco Messages postés 12 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 3 août 2007 - 6 sept. 2006 à 12:40
cs_tucco Messages postés 12 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 3 août 2007 - 14 sept. 2006 à 19:18
Salut a tous,

Merci a tous, pour tous ces codes qui me sont personnellement, en tant qu autodidacte, d une precieuse aide.
La j ai un probleme que je n arrive pas a resoudre:

   J ai un executable dont la fonction est de charger un driver .sys, pour des raisons de portabilite j aimerais faire un seul fichier contenant les 2 (.exe + .sys), ce fichier serait un executable qui charge le driver, dans mes recherches j ai trouve une piste : le format PE. mais j ai du mal a trouver un tuto ou des explications claires sur la procedure a suivre pour associer les fichiers.

si vous avez des pistes ou la solution, quelque chose qui pourrait faire avancer mon projet, je vous en serais tres reconnaissant.

Merci

17 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 sept. 2006 à 13:50
Petzold chapitre10 explique comment créer sa custom resource:
http://brunews.free.fr/brunews/download/CP5.zip
http://brunews.free.fr/brunews/download/CP5Sources.zip

même principe dans mon exemple, juste nom de la resource binaire qui change.

ciao...
BruNews, MVP VC++
3
24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
6 sept. 2006 à 12:44
mettre le fichier .sys en ressource de ton .exe et l'extraire ?
0
cs_tucco Messages postés 12 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 3 août 2007
6 sept. 2006 à 12:51
Merci pour ton aide
comment le mettre en ressource, j utilise visual C .net, ResEditor ??
j ai le code pour l extraire mais pas la procedure pour le mettre en ressource
0
24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
6 sept. 2006 à 13:28
tu utilises quoi comme IDE ? Visual Studio ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
6 sept. 2006 à 13:30
Visual C .net <-- ok, j'avais pas vu
Il doit y avoir un editeur de ressource dans ton Visual studio. Donc il faut ajouter le fichier comme data je pense.
Surement qu'avec ton code d'extraction de ressource il y a un exemple avec un fichier en ressource.

pt'etre que quelqu'un d'autre peut aider un peu plus là dessus ...

++
0
cs_tucco Messages postés 12 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 3 août 2007
6 sept. 2006 à 13:30
oui visual studio .Net 2003
0
24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
6 sept. 2006 à 13:32
0
cs_tucco Messages postés 12 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 3 août 2007
6 sept. 2006 à 14:22
j ai essaye ta methode en ajoutant dans les ressources du projet et ca a l air de marcher, je te remercie pour ton aide, j ai perdu pas mal de temps en recherche alors que ct assez simple.
la, je vais voir comment recuperer le fichier de ressource .sys et le copier sur le disque dur ailleurs, une suggestion de ta part peut etre ?? je te tiens au courant.

Merci 24Karas
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 sept. 2006 à 15:39
Tout ce dont tu as besoin ici (extraction et copie dans fichier):
DLL HOOK EN RESSOURCE BINAIRE DU PROG (WIN32)
http://www.cppfrance.com/code.aspx?id=25450

ciao...
BruNews, MVP VC++
0
24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
6 sept. 2006 à 21:25
de rien tucco, le forum ça sert à ça ;-)
0
cs_tucco Messages postés 12 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 3 août 2007
7 sept. 2006 à 12:38
je me suis rejoui trop vite, j ai integre le fichier .sys dans le projet dans le repertoire ressource via l explorateur de solution, et apres compilation il s avere que le driver ne s integre pas a l executable dont la taille ne change pas et l executable m indique qu il ne trouve pas la ressource, j ai regarde sur le post indique, le projet testeur ressemble a ce que je veux faire, mais j  aurais besoin de connaitre la procedure exact car je ne vois pas comment arriver a ce resultat, voici le code que j utilise pour extraire le fichier .sys:

int

_util_decompress_sysfichier(
char *theResourceName){

HRSRC aResourceH;

HGLOBAL aResourceHGlobal;

unsigned
char* aFilePtr;

unsigned
long aFileSize;HANDLE file_handle;

// Localise une ressource nommee dans le fichier .EXE courant

aResourceH= FindResource(NULL, theResourceName, "BINARY");

if(!aResourceH){

return 10;// mon programme me retourne 10 => il ne trouve pas la ressource driver.sys}

aResourceHGlobal= LoadResource(NULL, aResourceH);

if(!aResourceHGlobal){

return 2;}

aFileSize= SizeofResource(NULL, aResourceH);

aFilePtr= (

unsigned
char *)LockResource(aResourceHGlobal);

if(!aFilePtr){

return 3;}

char _filename[64];_snprintf(_filename, 62, "%s.sys", theResourceName);

file_handle= CreateFile(_filename,

                                          FILE_ALL_ACCESS,

                                           0,

                                          NULL,

                                          CREATE_ALWAYS,

                                          0,

                                          NULL);

if(INVALID_HANDLE_VALUE== file_handle){

int err = GetLastError();

if((ERROR_ALREADY_EXISTS== err) || (32== err)){

// le fichier existe et peut etre verrouiller en raison de l executable

return 4;}

printf("%s erreur decompression %d\n", _filename, err);

return
false;}

// Boucle while pour ecrire la ressource sur le disque

while(aFileSize--){

unsigned
long numWritten;WriteFile(file_handle, aFilePtr, 1, &numWritten, NULL);

aFilePtr++;

}

CloseHandle(file_handle);

return 5;}

voila je rappelle le probleme que je cherche a resoudre: j ai 2 fichiers un exectuable qui charge un driver driver.sys qui marchent tres bien separemment, ce que je veux  c de faire un seul fichier executable avec les 2 (exe + sys) pour des raisons de portabilite
0
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
8 sept. 2006 à 01:21
"J ai un executable dont la fonction est de charger un driver
.sys, pour des raisons de portabilite j aimerais faire un seul fichier
contenant les 2 (.exe + .sys)"

J'aimerais que tu m'explique en quoi cela va amélioré la portabilité de ton app?
Bob...
"La chance accorde ses faveur aux esprits avertis..."
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 sept. 2006 à 01:40
tucco > c'est quoi cette boucle pour écrire octet par octet ??? voila bien un truc qu'on ne fait jamais à moins de vouloir ralentir.
Je t'ai passé un lien, il faut faire exact comme c'est dans l'exemple.
Tu connais la taille du driver quand tu l'insères en ressource de l'exe alors code la valeur de buffer en dur et aspire le dedans en 1 seule passe, idem pour WriteFile en 1 seule fois.

ciao...
BruNews, MVP VC++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 sept. 2006 à 01:45
ah oui autrre truc:
"portabilité" en prog veut dire que le code peut être recompilé tel quel pour un autre système, Windows Linux par exemple.

On parlera plutôt de facilité de livraison dans ton cas, un driver est spécifique à un système donc exclut toute portabilité.

ciao...
BruNews, MVP VC++
0
cs_tucco Messages postés 12 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 3 août 2007
10 sept. 2006 à 13:28
oui "portabilite" est mal choisi, mais tu m as compris ce que je veux explicetement c ne plus avoir a deplacer 2 fichiers ou plus mais un seul qui contienne le ou les autres, le code que j utilise n est pas de moi je l ai trouve dans le livre de hoglund, je l ai mis pour ce faire une idee de ce que je cherche a faire et de la peut etre avoir la chance qu une personne m explique comme si j etais un newbie comment integrer mondriver.sys dans mon projet dans visual studio, j ai vu le post BruceNews et j ai telecharge le projet, mais je n arrive pas a savoir pour l instant comment IDR_BINDLL est cree dans le projet, le post n indique pas etape par etape l integration de sa dll, mais je vais a nouveau y jeter un coup d oeil peut etre que je suis passe a cote sans remarquer que la solution est sous mes yeux.

J ai ajoute le fichier mydriver.sys dans le repertoire resources dans l explorateur de solution, naivement j ai cru que ca suffisait mais sans creer d erreur de compilation la procedure ne donne rien, apres avoir vu le projet TESTEUR avec Jcd.dll, dans l explortateur de ressource je vois la ressource IDR_BINDLL, dans mon projet le ressource view est vide, alors comment m y prendre pour faire ?
0
cs_tucco Messages postés 12 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 3 août 2007
10 sept. 2006 à 14:04
Merci pour la reactivite, je consulte les liens et je reviens .

Merci encore.
0
cs_tucco Messages postés 12 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 3 août 2007
14 sept. 2006 à 19:18
merci beaucoup BruceNews, c etait exactement ce qu il me fallait tu as tape dans le mille, j ai teste et ca marche du 1er coup, voila le probleme resolu grace a brucenews, pour ceux qui cherche a faire la meme chose, embarque des fichiers dans l executable( dans mon cas un executable lancant un driver .EXE contenant un .SYS) consulter les 2 liens donnes par BruceNews (CP5 chapitre 10), assez simple a realiser, la doc est en anglais basique, je peux mettre la traduction mais je pense que ca ne sera pas necessaire. enfin si qq un la veux qd meme je decrirai etape par etape la procedure a suivre.

Merci a tous pour votre contribution.
  
0
Rejoignez-nous