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
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.
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, ç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 )