Declaration externe + news Kmdkit

Signaler
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
-
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
-
salut,

du nouveau pour les fondus de ring 0 sous NT:
http://www.website.masmforum.com/tutorials/kmdtute/
( kmd = kernel mode drivers )


avec masm32,

souhaitant obtenir l'adresse d'une fonction importée, j'ai fait.
mov eax,[NomFonctionImportee] ; j'obtient l'adresse du jmp pd[IAT_Entry]
mov eax,[eax+2] ; j'obtient l'adresse de IAT_Entry
mov eax,[eax] ; j'ai enfin l'adresse de la fonction.

est-il possible par une declaration d'avoir directement l'adresse IAT_Entry en tant que label ? ( mov eax,[NomFonctionImportee] = mov eax,[IAT_Entry] )

j'ai dejà essayé /MERGE:.rdata .text

@++

2 réponses

Messages postés
116
Date d'inscription
samedi 4 juin 2005
Statut
Membre
Dernière intervention
10 avril 2013
1
Je ne suis pas sur d'avoir bien compris ta question:
Pourquoi pas utilisé une MACRO du genre:

FuncImport MACRO NomFonction
mov eax, OFFSET NomFonction
mov eax,[eax+2]
mov eax,[eax]
ENDM

Puis dans le code:

.CODE
FuncImport NomFonctionImportee
call eax ;Intégrer le call dans la Macro ?



surement /MERGE:.rdata = .text ?
A+
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
salut,

c'est bien /MERGE:.rdata = .text

ce n'est pas une macro que je cherche. c'est une ligne de code en moins:
l'exe mappé dont on parlait justement:

HEADERS
...
IAT
dd &MyImportFunc
dd &?
...
CODE
start:
mov eax,MyImportFunc ; donnera eax = &Here_a_jump
mov eax,[eax+2] ; donnera eax = &IAT[0]
mov eax,[eax] ; donnera eax = &MyImportFunc
Here_a_jump:
jmp pd [&IAT[0]] ; jump correspondant a MyImportFunc

je veux que le symbol MyImportFunc donne directement &IAT[0] pour supprimer Here_a_jump.

et le code:
mov eax,MyImportFunc ; donnera eax = &IAT[0]
mov eax,[eax] ; donnera eax = &MyImportFunc

je sais que c'est possible pour l'avoir vu dans un programme mais je ne sais pas comment le déclarer au niveau du source.

@++