exécuter un fichier déjà en mémoire C++

Tout sur les langages de programmation.

exécuter un fichier déjà en mémoire C++

Messagepar darkness » 26 Mars 2007, 19:12

Bonsoir tout le monde,

voilà je suis sur un projet de programme et j'aurais besoin d'ouvrir un fichier contenu dans les ressources.

J'ai donc commencé par touvé,locké,extrai puis exécuté la ressource, ça marche bien mais maintenant je me demandais si il serai possible d'éviter de l'extraire...

En clair le fichier se retrouve en mémoire (suite à FindRessource,Load & LockResource) et je cherche une fonction qui me permettrait de l'exécuté... un shellexecute pour la mémoire en fait :)

Merci
Darkness

"Fumer tue" sur les paquets de tabac... et pourquoi pas "vivre tue" sur les actes de naissance?
Avatar de l’utilisateur
darkness
Crackeur confirmé
Crackeur confirmé
 
Messages: 170
Inscription: 15 Juin 2005, 18:33
Localisation: quelque part en France ...

Messagepar skirby » 26 Mars 2007, 22:11

J'avais déjà cherché ça à l'époque mais je n'ai rien trouvé à ce sujet :cry:

Si tu trouves une solution, je suis preneur mais je crois que ça n'existe pas malheureusement.
En revanche, ce qu'il est possible de faire c'est de charger une dll depuis la mémoire (sans avoir à créer le fichier sur ton disque) mais bon, ce n'est pas ce que tu cherches à faire.
skirby
Dieu du cracking
Dieu du cracking
 
Messages: 2160
Inscription: 29 Novembre 2004, 09:53

Messagepar darkness » 01 Avril 2007, 23:09

Merci skirby,

pour ton histoire de dll ça dépend de comment tu procède exactement...
J'essaye d'être un peu plus clair :)...J'ai réfléchi un peu sur la chose et tout fichier ayant besoin d'être en mémoire pour être exécuté par l'UC je me dit qu'il doit quand même y avoir quelquechose quelquepart qui soit possible...genre au lieu de balancé le chemin du fichier on lui donne son emplacement directement en mémoire...
Enfin après je sais pas trop mes connaissances dans le domaine de manipulation de la mémoire sont encore très limitées...

Mais sinon quelle est la technique que t'utilises pour charger la dll?
C'est pas tout à fait ce que je compte faire mais je pourrais essayer de voir si en bidouillant un peu avec ça j'arrive à quelquechose...
Darkness

"Fumer tue" sur les paquets de tabac... et pourquoi pas "vivre tue" sur les actes de naissance?
Avatar de l’utilisateur
darkness
Crackeur confirmé
Crackeur confirmé
 
Messages: 170
Inscription: 15 Juin 2005, 18:33
Localisation: quelque part en France ...

Messagepar yarocco » 16 Avril 2007, 00:30

J'ai réfléchi un peu sur la chose et tout fichier ayant besoin d'être en mémoire pour être exécuté par l'UC je me dit qu'il doit quand même y avoir quelquechose quelquepart qui soit possible...genre au lieu de balancé le chemin du fichier on lui donne son emplacement directement en mémoire...

Le probleme si le fichier n'est que "stocke" en memoire, c'est qu'il faut lui appliquer quelques traitements pour qu'il s'execute normalement.
Par contre, si le fichier n'est pas prevu pour etre charge (ne dispose pas d'une section relocation), je pense qu'il est (quasi) impossible de le faire executer dans ton espace memoire car ses adresses fixes (ses donnees en principes) ont ete calculees par le linker et son en dur dans le code (a moins que je ne me trompe). Le programme ira donc chercher des donnees dans ton programme original.
En fait, il faudrait que tu arrive a simuler un CreateProcess mais je crois que c'est aussi impossible en espace utilisateur donc sans issue.

Mais sinon quelle est la technique que t'utilises pour charger la dll?

On peut simuler le chargement des DLL car elles disposent des sections relocations.
Le principe est :
-Verifier qu'il dispose de l'entete DOS
-Verifier qu'il dispose de l'entete PE
-Lire les entetes des sections
-Calculer les adresses pour les fonctions importees (pour que la dll puisse appeller les fonctions qu'il lui faut (ca peut aussi impliquer un chargement recursif d'une autre dll))
-Effectuer les relocations
-de tete, je crois que c'est tout :)

Pour chacune de ces operations, il existe pas mal de sites qui explique la marche a suivre.
Sinon, un peu de pub : www.lookinginside.net
yarocco
Mutation en crackeur...
Mutation en crackeur...
 
Messages: 96
Inscription: 06 Février 2005, 23:58


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité