Page 1 sur 1
Fichier map
Publié : ven. 25/juil./2014 9:17
par CaptainCrunch
Est il possible de générer un fichier map lors de la compilation ?
Re: Fichier map
Publié : ven. 25/juil./2014 10:25
par Ar-S
Salut,
Qu'appelles tu un fichier map ? de google map ? de quake ? un fichier texte avec les données de la commande NewMap de pb ?
De la précision dans les questions stp

Re: Fichier map
Publié : ven. 25/juil./2014 10:28
par CaptainCrunch
Un fichier qui indique les fonctions avec les adresses respectives
Func XXXXXX 0x000401...
Re: Fichier map
Publié : ven. 25/juil./2014 14:25
par graph100
il faut se le programmer. Et lister les fonctions à la main.
Tu peut te faire un truc du genre :
Code : Tout sélectionner
Macro _q
"
EndMacro
Macro Map_(_funct_)
Debug _q#_funct_#_q + " @ " + @_funct_
EndMacro
Procedure test()
EndProcedure
Map_(test())
Re: Fichier map
Publié : ven. 25/juil./2014 17:46
par majikeyric
Mais dans tous les cas, à quoi ça servira ?
Puisqu'à chaque exécution l'exécutable est relogé en mémoire à des adresse différentes.
A moins que tu veuilles l'offset (le déplacement) d'une fonction par rapport au début de l'éxécutable ???
Re: Fichier map
Publié : ven. 25/juil./2014 19:33
par graph100
ben c'est ça que le @Funct te donne..., mais j'avoue que je n'y vois pas trop l'intérêt.
Ca doit avoir un lien avec les autres post de CaptainCrunch sur la sécurité

Re: Fichier map
Publié : ven. 25/juil./2014 20:58
par comtois
Un truc comme ça ne convient pas ? (voir l'aide sur 'RunTime')
Code : Tout sélectionner
Runtime Procedure OnEvent()
Debug "OnEvent"
EndProcedure
Debug GetRuntimeInteger("OnEvent()") ; Will display the procedure address
Re: Fichier map
Publié : ven. 25/juil./2014 21:36
par majikeyric
graph100 a écrit :ben c'est ça que le @Funct te donne...,
L'adresse retournée est un offset par rapport au début du segment de code ? ou c'est l'adresse physique mémoire ?
Je m'y perd avec ces modes d'adressage à la noix...
*edit* Après avoir désassemblé un morceau de code, c'est l'offset par rapport à CS.
Re: Fichier map
Publié : sam. 26/juil./2014 18:48
par graph100
Comme tu peux enregistrer des adresses de procedure dans une DataSection, pour les exploiter ensuite avec les interfaces, ces adresses sont utilisables une fois que l'exe est produit !
Re: Fichier map
Publié : jeu. 31/juil./2014 4:45
par CaptainCrunch
Hello,
Merci pour vos réponses
Dis moi graph100, tu n'aurais pas un petit exemple pour illustrer la chose ?
Re: Fichier map
Publié : jeu. 31/juil./2014 11:21
par graph100
Code : Tout sélectionner
Interface interface_fonction
DateString.s()
AfficheDATE()
EndInterface
Structure structure_fonction
*zz_FunctionTable
_Function.interface_fonction
date.s
EndStructure
Procedure.s Fonction_DATE_STR(*obj.structure_fonction) ; retourne la date en chaine de caractère
*obj\date = FormatDate("%yyyy/%mm/%dd", Date())
ProcedureReturn *obj\date
EndProcedure
Procedure Fonction_Requester_DATE(*obj.structure_fonction) ; retourne la date en chaine de caractère
MessageRequester("Date", "La date enregistrée dans *obj est : " + *obj\date)
EndProcedure
; création de l'obj
*obj.structure_fonction = AllocateMemory(SizeOf(structure_fonction))
*obj\_Function = *obj
*obj\zz_FunctionTable = ?VTable
; on enregistre les adresses des fonctions
DataSection
VTable:
Data.i @Fonction_DATE_STR()
Data.i @Fonction_Requester_DATE()
EndDataSection
; utilisation
Debug *obj\_Function\DateString()
*obj\_Function\AfficheDATE()
*obj\date = "2013/05/01"
*obj\_Function\AfficheDATE()
; on peut aussi utiliser un autre pointeur pour acceder à l'interface
; seulement, on ne pourra pas accèder aux autres champs de la structure.
*inter.interface_fonction = *obj
*inter\AfficheDATE()