begin process at 2010 03 18 18:22:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Aide a la programmation Windows

 > 

Directive Invoke


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Directive Invoke

dimanche 6 novembre 2005 à 12:03:00 | Directive Invoke

bazole

Bonjour

J'étudie la possibilité de créer un petit assembleur sous windows, et j'ai du mal à comprendre comment faire appel à une API windows.
Sous Masm, il y a la directive Invoke

ex:
Invoke NomFonction, Param1, Param2, Param3

qui correspondant à :
Push Param3
Push Param2
Push Param1
Call NomAPI

En assembleur pur après un "Call", il y a un adresse mémoire
(par assembleur pur, je veux dire sans directive ni macro)

D'après la source suivante, http://www.asmfr.com/code.aspx?id=31157
NomAPI correspondrait à un pointeur de l'API, obtenu par GetProcAddress qui est aussi une API, comme le chargement d'une DLL qui doit se faire grâce à une API (je suppose), et dans ce cas comment faire pour appeler GetProcAddress etc...?

Merci

bazole


dimanche 6 novembre 2005 à 13:00:25 | Re : Directive Invoke

BruNews

Administrateur CodeS-SourceS
ben normalement, GetProcAddress est une fonction comme une autre:

push offset NomFonction
push hdll
call GetProcAddress

pointeur fonction est dans eax
test eax, eax
je short funcNULL
push param1 ; exemple func 2 params
push param0
call eax

funcNULL:
.....

ciao...
[ Lien ]
BruNews, MVP VC++
dimanche 6 novembre 2005 à 15:00:22 | Re : Directive Invoke

bazole

Merci d'avoir répondu si vite




Ce que je veux faire, c'est carrément créer un petit assembleur.

Un niveau éditeur pour entrer les mnémoniques et les enregistrer dans un fichier ASCII.
Un niveau hexa qui transformera les mnémoniques en codes hexadécimales dans un deuxième fichier ASCII.
Un dernier niveau qui transformera le "code" hexa ASCII en binaire.

Jusque là, j'ai fait quelques tests, et c'est ok.
A ce niveau là, ce sera un assembleur pur, pas de macro, pas directive, rien de tout celà. Juste les mnémoniques du processeur.
Un "call GetProcAddress" ne pourra pas être compilé.
Sauf si je trouve l'adresse de GetProcAddress

Dans l'exemple que tu donne, tu utilise un assembleur qui est déjà capable de transformer "call GetProcAddress" en
"call pointeur/adresse de GetProcAddress"

Désolé mais j'ai du mal à expliquer les choses.

Merci
tchao
Bazole

dimanche 6 novembre 2005 à 15:23:56 | Re : Directive Invoke

BruNews

Administrateur CodeS-SourceS
alors transforme le 'call' en son équivalent:

mov edx, [addrEIP]
PushParams ici
push edx ; VALEUR EIP pour addr retour
jmp addrDuRetourDeGetProcAddress

bon courage pour la suite.
Gaffe que il y a déjà pléthore d'assembleurs.

ciao...
[ Lien ]
BruNews, MVP VC++
dimanche 6 novembre 2005 à 16:44:50 | Re : Directive Invoke

bazole

Merci

Tchao
bazole
mardi 8 novembre 2005 à 09:59:32 | Re : Directive Invoke

ToutEnMasm

Salut,
Il existe deux formes d'appel d'une API
Statique,utilisant les librairies de fonctions.(call nom)
Dynamique: call edx     ,edx est recheché par GetProcAdresse

Un mini assembleur doit aussi prendre en compte l'adressage directe ,indirecte et indexé.

Pour plus de renseignements.
[ Lien ]

                 ToutEnMasm







Cette discussion est classée dans : windows, assembleur, api, directive, invoke


Répondre à ce message

Sujets en rapport avec ce message

API Windows [ par cowboy ] CowboyJ'aimerais savoir s'il existe un descriptif des commandes API pour windows en asm ( en francais si possible ) . J'aimerais trouv call API Windows [ par vecchio56 ] Pourquoi il faut mettre absolument dword ptr avant le nom d'une fonction pour appeler une API de Windows? progammation Driver en Assembleur sous WinXp [ par Mareck666 ] Boujour tous-le-monde, alors voila mon probléme, en faite j'aimerais programmer un driver sous ce chers Windaube (oups windows ) Xp, destiné a affiche api windows [ par tequilasurlaterre ] bonjour a tous je suis debutant et j'aimerais savoir si il existe la traduction en francais de toutes les api windows merci d'avance et merc Theorie assembleur: mod réel, mode protégé, mode virtuel [ par tezca_system ] Une chose que je n'arrive pas a comprendre, et peut etre que vous pourrez m'eclairer c'est comment fonctionne le mode virtuel. A partir de windows NT4 La fonction API SendMessageA [ par douja ] Bonjour les amis J'utilise la fonction SendMessageA pour la justification à droite des mes zones de saisie avec les paramètres suivants: SendMessag problème en assembleur 8085 [ par Facoli ] Bonjour je suis un étudiant en 2 èm année tronc commun informatique j' ais des problèmes sur L'assembleur du processeur Intel 8085 en utilisant l'asse C'est quoi une source assembleur [ par benpro82 ] Voila suis tout nouveau et je voudrais savoir ce que sé ces sources la...Merci d'avanceBenproWorms3d.fr.st Débutant : Commencer par le début [ par cire2003 ] BonjourJe viens tout juste de commencer à apprendre l'assembleur et dans les tuto que je lis, ils y a différents exemples. Je les retranscris et les c OS -> passer d'ASM au C pour la programmation [ par djmoa ] Bonjour. j'ai quelques notions d'assembleur, et j'aimerai commencer la programation d'un petit OS, me basant sur des choses existant, mais je vois bea


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales