Empacteur/desempacteur de fichiers

Soyez le premier à donner votre avis sur cette source.

Vue 2 653 fois - Téléchargée 197 fois

Description

C'est une classe c++ (créée avec visual c++ 6, donc certains petits details comme la declaration de variables dans les boucles for() sont à modifier un peu pour que ca soit compatible avec d'autres compilateurs) permettant de créer un fichier où vous pourrez empacter d'autres fichiers. Pas de souci de taille du pack (il peut faire 4Go sans pb ;) puisqu'il est ouvert de maniere... Comment dire.. je sais pas comment ça s'appelle :) en gros on charge pas le fichier entierement en memoire, on ecrit / lit juste sur des blocs de 4Ko qu'on bloque/debloque ^^ Ensuite possibilité de récuperer un fichier dans un buffer (donc la eventuel pb de memoire si le fichier fait 200Mo mais bon on travaille rarement avec ce type de fichiers), de chercher un fichier, de trouver s'il y a plusieurs occurences dans le meme pack, de supprimer un fichier du pack, de l'enregistrer directement sur le disque (tjs le meme pb de memoire)... Enfin tout plein d'operations possibles!

Source / Exemple :


/*********
      ZIP

                  • /

Conclusion :


Voila en esperant que ça pourrait vous être utile (en tout cas pour moi ça l'est ;)! Toute remarque ou critique constructive est bien evidemment la bienvenue! Et aussi rapport de bug (normalement cette classe est hyper debuggé merci kirua ;) ou meme modification!
A bon entendeur....

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
il semblerait (a cérifier, mais ca devrait marcher) que pour ouvrir un fichier contenu en resource ds le prog, il suffise de remplacer le nom du fichier a ouvrir par: MAKEINTRESOURCE(ID_DE_LA_RESSOURCE)
c'est bizzae pasque qd on cherche ce qu'est makeintresource, on trouve:
#define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i)))
#define MAKEINTRESOURCEW(i) (LPWSTR)((DWORD)((WORD)(i)))
#ifdef UNICODE
#define MAKEINTRESOURCE MAKEINTRESOURCEW
#else
#define MAKEINTRESOURCE MAKEINTRESOURCEA
#endif // !UNICODE
étrange...je regarde ça et je vous dis. En tout cas, ca serait une bonne nouvelle
++
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
beuh :( bon pas grave jme débrouillerai.
je pense que le plus simple c'est de faire un .pak, de le mettre en ressource, j'enregistrer sur le disque au 1er runtime, le dépacker et ouvrir chaque fichier a chaque fois.
pour UPX j'essayerai qd j'aurai le temps, pour l'instant j'ai déja 4 trucs en cours + le bac ^^
merci de votre aide
++
ad
Messages postés
104
Date d'inscription
dimanche 2 mars 2003
Statut
Membre
Dernière intervention
12 juin 2005

Je pense pas l'avoir non plus, désolé...
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

J'ai qu'un truc à dire: fais le test ;). Mais de fait, faudra récrire une partie du code, et je suis pas sûr que ce soit portable d'accéder aux ressources d'un exe. Enfin, t'en sait sûrement plus que moi à ce sujet.

Sinon, l'avantage du packer, c'est aussi de pouvoir compiler rapidemment, de pouvoir mettre à jour les ressources sans recompiler, de pouvoir gérer proprement tousles éléments indépendemments etc.

Le GUI, je l'ai plus, demande à Wett.
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
un GUI? je peux l'avoir?
sinon...heu ben en fait oué c'est pas faux...
moi en fait ce que je recherche c'est mettre tous mes fichiers dans mon exe tout en ayant un prog le plus petit possible...UPX est un compresseur de .exe, permet de diviser la taille par 3 ou plus
Afficher les 18 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.