cs_bazole
Messages postés37Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention13 novembre 2005
-
6 nov. 2005 à 12:03
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 2022
-
8 nov. 2005 à 09:59
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...?
cs_bazole
Messages postés37Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention13 novembre 2005 6 nov. 2005 à 15:00
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"
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 8 nov. 2005 à 09:59
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é.