Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : remplacer GetProcAddress [ Windows / System ] (jb212121)

samedi 6 septembre 2008 à 10:05:28 | remplacer GetProcAddress

jb212121

Bonjour,

Sauriez vous s'il existe un équivalent à GetProcAddress ?

Merci

samedi 6 septembre 2008 à 16:12:17 | Re : remplacer GetProcAddress

SAKingdom

Membre Club
Pourquoi veux-tu un équivalent de cette fonction ?

C++ (@++)


samedi 6 septembre 2008 à 16:39:13 | Re : remplacer GetProcAddress
dimanche 7 septembre 2008 à 16:22:08 | Re : remplacer GetProcAddress

SAKingdom

Membre Club
Je ne vois pas l'utilité d'en trouver un équivalent. Je n'en connais, de toute façon, pas mais même si il en existe un, je suis convaincus que, à moins de faire une fonction soi-même qui fouille à même le binaire, l'appel à cette fonction équivalente débouche sur un GetProcAddress.

C++ (@++)


mardi 9 septembre 2008 à 14:30:25 | Re : remplacer GetProcAddress

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

Par ici, il y a des fonctions avancées de manipulation d'image (Au sens exécutable).

Sinon, GetProcAdress doit se baser sur la table d'export, donc ce n'est pas trop dur à recoder. La doc sur le format des exécutables est téléchargeable ici.

mardi 9 septembre 2008 à 15:52:40 | Re : remplacer GetProcAddress

jb212121

Réponse acceptée !
Merci rt15
j'ai trouvé se que je cherchais je poste si sa intéresse quelqu'un

LPVOID _stdcall _getprocaddress(HMODULE hmod, PCHAR func)
{
PIMAGE_DOS_HEADER dos_header;
PIMAGE_NT_HEADERS nt_headers;
PIMAGE_EXPORT_DIRECTORY exports;
PDWORD functions;
PSHORT ords;
PDWORD names;

if (!IsBadReadPtr(hmod, sizeof(IMAGE_DOS_HEADER)))
{
dos_header = (PIMAGE_DOS_HEADER)hmod;
if (dos_header->e_magic == IMAGE_DOS_SIGNATURE)
{
nt_headers = (PIMAGE_NT_HEADERS)((PCHAR)hmod + dos_header->e_lfanew);
if (!IsBadReadPtr(nt_headers, sizeof(IMAGE_NT_HEADERS)))
{
if (nt_headers->Signature == IMAGE_NT_SIGNATURE)
{
exports = (PIMAGE_EXPORT_DIRECTORY)((PCHAR)hmod + nt_headers->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress);
if (!IsBadReadPtr(exports, sizeof(IMAGE_EXPORT_DIRECTORY)))
{
functions = (PDWORD)((PCHAR)hmod + exports->AddressOfFunctions);
ords = (PSHORT)((PCHAR)hmod + exports->AddressOfNameOrdinals);
if ((DWORD)func & 0xFFFF0000)
{
names = (PDWORD)((PCHAR)hmod + exports->AddressOfNames);
while (!IsBadReadPtr(names, sizeof(DWORD)))
{
if (strcmp((PCHAR)hmod + *names, func) == 0)
{
if (!IsBadReadPtr(&functions[*ords], sizeof(DWORD)))
{
return (PCHAR)hmod + functions[*ords];
}
}
names++;
ords++;
}
} else {
if (!IsBadReadPtr(&functions[(SHORT)func], sizeof(DWORD)))
{
return (PCHAR)hmod + functions[(DWORD)func];
}
}
}
}
}
}
}
return NULL;
}


mardi 9 septembre 2008 à 18:17:04 | Re : remplacer GetProcAddress

rt15

Membre Club Administrateur CodeS-SourceS

Bah voilou, il va chercher dans la table d'export.

Par contre je connaissais pas IsBadReadPtr. Mais cette fonction à l'air bien nulle si on se réfèrre à sa doc (Lire le commentaire à la fin).

Et là, elle est utilisée un peu abusivement...

A ta place je les ferais tous sauter. Si ça plante sans, c'est qu'une vérif qui aurait pu être faîte ne l'est pas.


mercredi 10 septembre 2008 à 08:53:54 | Re : remplacer GetProcAddress

jb212121

Oui je pense que tu as raison rt15 je vais voir sans l'utilisation de IsBadReadPtr



Cette discussion est classé dans : remplacer, getprocaddress


Répondre à ce message

Sujets en rapport avec ce message

Remplacer la copie de fichier de Windows [ par MangaII ] Salut !Quelqu'un sorai-t-il comment on pe remplacer la fonction de copie de fichier sous Windows par un programme maison !Mon but est d'optimiser la c Remplacer la fonction de copie de fichier sous Windows [ par MangaII ] Salut !Quelqu'un sorai-t-il comment on pe remplacer la fonction de copie de fichier sous Windows par un programme maison !Mon but est d'optimiser la c remplacer un bout de chaine d'une chaine par un autre bout de chaine [ par loicus ] En pratique, j'aimerais bien avoir un truc genre :chaine4=replace("a remplacer",chaine1,"c'a y, c'ets remplacé");Mais je ne sais pas quelle fonction u Fonction "Remplacer Tout" pour un fichier (VC++.Net) [ par milobac ] J'aimerais créer un programme, en VC++.Net, qui remplace une chaîne, à chaque fois qu'elle est détecté dans un fichier, par une autre.En quelque sorte Pourquoi la majorité des programmes de ce site ne marche pas avec moi ? [ par Adeon ] Adeon J'ai un tres gros probleme, tous les programmes que je prends dans ce site utilise un langage que mon ordi ne reconnait pa aide sur la library c++ 5.0 comment remplacer <graphics.h> [ par temoin ] TEMOIN Allo je besoin d'aide si quelqu'un peut m'aide je voudrais savoir avec quoi qu'on peut remplacer ce library du c++ 5.0 ou dev6.0#include moi remplacer le mot de passe par des étoiles en "C" dans un terminal sous linux [ par Minou1981 ] Comment dois je faire pour remplacer les caracteres par des étoiles en "C" dans un terminal sous linux??? Scanf et allegro [ par boun85 ] Par quelle fonction je peut remplacer scanf() lorsque j'utilise allegro sachant que je veu recupperer un nombre entrer au clavier ?Voila ce ke je veut WriteFile : Remplacer [ par coockiesch ] Kikoo totu le monde!!!J'aimerais savoir s'il est possible de remplacer du texte dans un fichier avec WriteFile sans devoir le copier et changer les in Utilisation DLL SANS .lib [ par nasedo47 ] J'ai récupéré une DLL sur un site ainsi qu'une page avec les prototypes de toutes les fonctions contenues dans cette DLL.J'aimerais utiliser ces fonct


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.