Page 3 sur 3

Publié : ven. 28/juil./2006 22:18
par nico
Dr. Dri a écrit : Voila les questions que je me pose:
Dans certains fichiers je trouve des noms de fonctions un peu exotiques. Comment je dois l'interpréter ? Coment appeller ces fonctions ? Quelles sont les syntaxes autorisées pour les noms des fonctions ?

dans le fichier AegisE5.dll, les noms des fonctions sont sous la forme @fonction@8
je comprend bien le @8 (deux arguments) mais pourquoi le nom de la fonction commence par un @ ?

pire encore, dans le fichier narrhook.dll on peut voir des choses comme ?fonction@@YG ou ?fonction@@YGHZ@@GHIIT

peut être un bug de PB ? Il me semble que PB utilise des fonctions de kernel32.dll (LoadLibrary_, GetProcAddress_ etc importées statiquement) pour gérer les bibliothèques externes donc je doute un peu...

Dri :mad:
J'ai trouvé un élément de réponse sur le Net:
Chez certains compilateurs, dont Visual C++ 6 et MinGW, l'utilisation de __stdcall a pour effet de modifier les noms des fonctions exportées lors de la compilation (cette modification s'appelle une décoration). Par exemple, avec Visual C++ 6 notre fonction HelloWorld() sera exportée sous le nom " _HelloWorld@0 ". Mais vous pouvez tout de même spécifier le nom qu'aura votre fonction en l'indiquant dans un fichier .def.

Publié : ven. 28/juil./2006 23:07
par Dr. Dri
Ca me rapelle que selon la facon de configurer DevC++ le nom des fonctions exportées peut changer...

Par exemple int Function(unisgned int a, word b) devient i_Function@Uiw. Bon bah je vais chercher les caracteres autorisés pour le nom des fonctions ^^

Dri

Publié : sam. 29/juil./2006 4:57
par Anonyme2
Dri, ça ne te rapelle pas ce que Fait PB (écriture du fichier asm) pour les fonctions de PB écrite en C, il ajoute @ suivit du nombre d'arguments multiplier par 4 (Merci Nico :D )

Sendmessage devient Sendmessage@16 etc