IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Cryptor , executer un exe en memoire


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 19
    Points : 11
    Points
    11
    Par défaut Cryptor , executer un exe en memoire
    Lut all
    Je code un cryptor d'executables et j'ai besoin d'aide pour coder une fonction qui permet d'executer le fichier crypté en memoire , je pense que le fichier crypté devra etre en forme d'une string comme ca on puisse l'executer en memoire mais c'est tout ce que je sais , si quelqu'un a une autre idée ou une fonction pour executer un fichier exe en memoire ou une string en memoire
    Merci bcp

  2. #2
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Il s'agit en réalité d'un éxécutable contenant en plus de son programme, des données cryptées. Cet éxécutable (le lanceur) est donc éxécuté normalement : Il va lire ses données cryptées, les décrypter et les mettre en mémoire avant d'éxécuter ce nouveau programme. Donc au final, On a 2 programmes distincts en mémoire, le lanceur et le programme décrypté. Il faut bien comprendre que ce 2ème programme n'est plus crypté lorsqu'il est en mémoire, exactement comme un programme standart, sinon le système ne pourrait rien en faire.

    Lorsqu'on éxécute un programme normalement, celui-ci est chargé en mémoire, puis le système pointe le début son adresse (offset). Il faudrait que je ressorte mes bouquins d'assembleur de mes cartons pour t'en dire plus sur le fonctionnement des programmes en mémoire... Pas ce soir !

    Tu trouveras des infos sur le net en cherchant un peu, à+

    [EDIT]
    Les gros programmes (enfin selon leur conception) utilisent le mode Overlay qui consiste à charger en mémoire uniquement les portions du programme (unités) dont le programme a besoin pour fonctionner. Je sais que cette technique était indispensable pour réaliser des gros programmes du temps du Dos...
    De retour parmis vous après 10 ans!!

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    thanks de la repOnse sub0.
    j'ai cherché sur internet la seule source que j'ai trouvé c'est un truc chez iamaphex.com je pense , mais les antivirus detectent comme virus et tout , elle ne me convient pas de toute facon je veux apprendre a en faire une pareille pas copier coller celle d'un autre .
    merci de ton aide je t'attends impatiement

  4. #4
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    La 1ère étape est de prendre un EXE comme notepad, d'essayer de le charger en mémoire (avec BlockRead par exemple) et de trouver la commande assembleur te permettant de pointer sur l'adresse mémoire pour l'éxécuter (interruption). Attention au crash du système, c'est vite arrivé lorsqu'on bidouille avec ce genre de fonction...

    Ou sinon, il me semble que l'on peut éxécuter un programme en mémoire avec ShellExecute ou CreateProcess... Regarde ce qui est dit dans l'aide en ligne de Delphi ou sur le net à ce sujet. Bon courage, à+
    De retour parmis vous après 10 ans!!

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    The BlockRead procedure is used to read RecordCount data records into Buffer from an untyped binary file given by the FileHandle.

    c'est pas trop ce que je cherche ,parce que mon fichier crypté ne marche pas , normal il est crypté , et je veux le decrypter en memoire pas sur le disk dur

  6. #6
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Commence donc par essayer de comprendre commence ça marche au lieu de t'acharner sur un truc que tu ne trouveras jamais autrement, non ?

    Lorsque tu fais un blockread, tu as un paramètre dans cette fonction (le 2ème paramètre pour être précis) qui est le Buffer. Il correspond aux données en mémoire où sera stocker les octets du fichier.
    Le handle du fichier, c'est autre chose... c'est juste pour accèder au fichier sur le disque...

    Sinon, j'ai trouvé ce sujet qui devrait t'intérresser :
    http://www.developpez.net/forums/showthread.php?t=72154
    De retour parmis vous après 10 ans!!

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    deja vu le sujet , enfaite je cherche une fonction genre je lui donne une string et elle execute la string en memoire ?? le fichier decrypté sera cette string , ca pourrait aller non ?

  8. #8
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    (je suis à 2 doigts de verrouiller ce sujet). A croire que tu ne piges rien à ce que je t'ai dis depuis le début : Je t'ai expliqué qu'il n'est pas possible d'éxécuter un programme crypté en mémoire. Que ce soir bien clair : Pour pouvoir éxécuter un programme, il faut qu'il soit en mémoire et pas crypté.

    C'est quoi cette string ? Un programme, c'est du binaire, pas du texte !!
    De retour parmis vous après 10 ans!!

  9. #9
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Citation Envoyé par Sub0
    La 1ère étape est de prendre un EXE comme notepad, d'essayer de le charger en mémoire (avec BlockRead par exemple) et de trouver la commande assembleur te permettant de pointer sur l'adresse mémoire pour l'éxécuter (interruption). Attention au crash du système, c'est vite arrivé lorsqu'on bidouille avec ce genre de fonction...

    Ou sinon, il me semble que l'on peut éxécuter un programme en mémoire avec ShellExecute ou CreateProcess... Regarde ce qui est dit dans l'aide en ligne de Delphi ou sur le net à ce sujet. Bon courage, à+
    Voilà, j'ai déjà répondu.
    En fait tu as tout ce qu'il faut pour progresser. Je n'ai rien d'autre à te donner, à+
    De retour parmis vous après 10 ans!!

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    je sais , la string dont je te parle sera bien evidémment decryptée ...
    mais reste a trouver une facon pour l'executer en memoire , c ce que je te demande...
    tx

  11. #11
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    il me semble que l'on peut éxécuter un programme en mémoire avec ShellExecute ou CreateProcess... Regarde ce qui est dit dans l'aide en ligne de Delphi ou sur le net à ce sujet.
    Déjà répondu dans mon 2ème message !!
    De retour parmis vous après 10 ans!!

Discussions similaires

  1. Executer un exe en php (Unable to fork)
    Par Alain15 dans le forum IIS
    Réponses: 13
    Dernier message: 03/08/2006, 13h15
  2. Récupérer le chemin de l'executable MSACCESS.EXE
    Par mastasushi dans le forum Access
    Réponses: 2
    Dernier message: 24/05/2006, 12h00
  3. Probleme d'execution de .exe
    Par liaisonsite123 dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 16/01/2006, 07h59
  4. [langage] executer un .exe (system())
    Par nonolepetitmalin dans le forum Langage
    Réponses: 2
    Dernier message: 14/02/2003, 14h10
  5. Comment créer et executer un .EXE
    Par maher12 dans le forum Flash
    Réponses: 3
    Dernier message: 26/09/2002, 08h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo