J'essaye de recuperer l'adresse de la fonction CreateMutex.
POur ce faire je fais un hDll = LoadLibrary("kernel32") puis un GetProcAddress(hDll, "CreateMutex")
Mais GetProcAddress me renvoie NULL. Cela marche pour certaines fonction (Process32Next) par exemple, mais pas pour d'autres.
Y a t il une autre dll a loader?
CreateMutexA() ou CreateMutexW()
storm
Christian ASTOR wrote:
storm a écrit:
J'essaye de recuperer l'adresse de la fonction CreateMutex.
POur ce faire je fais un hDll = LoadLibrary("kernel32") puis un GetProcAddress(hDll, "CreateMutex")
Mais GetProcAddress me renvoie NULL. Cela marche pour certaines fonction (Process32Next) par exemple, mais pas pour d'autres.
Y a t il une autre dll a loader?
CreateMutexA() ou CreateMutexW()
J'ai pas encore testé mais merci pour l'info. Mais une question: Pourquoi? :) je veux dire, aucune doc sur ces deux fonctions dans celle de CreateMutex()!
merci
-- storm
Christian ASTOR wrote:
storm a écrit:
J'essaye de recuperer l'adresse de la fonction CreateMutex.
POur ce faire je fais un hDll = LoadLibrary("kernel32") puis un
GetProcAddress(hDll, "CreateMutex")
Mais GetProcAddress me renvoie NULL. Cela marche pour certaines
fonction (Process32Next) par exemple, mais pas pour d'autres.
Y a t il une autre dll a loader?
CreateMutexA() ou CreateMutexW()
J'ai pas encore testé mais merci pour l'info.
Mais une question: Pourquoi? :) je veux dire, aucune doc sur ces deux
fonctions dans celle de CreateMutex()!
J'essaye de recuperer l'adresse de la fonction CreateMutex.
POur ce faire je fais un hDll = LoadLibrary("kernel32") puis un GetProcAddress(hDll, "CreateMutex")
Mais GetProcAddress me renvoie NULL. Cela marche pour certaines fonction (Process32Next) par exemple, mais pas pour d'autres.
Y a t il une autre dll a loader?
CreateMutexA() ou CreateMutexW()
J'ai pas encore testé mais merci pour l'info. Mais une question: Pourquoi? :) je veux dire, aucune doc sur ces deux fonctions dans celle de CreateMutex()!
merci
-- storm
storm
storm wrote:
Christian ASTOR wrote:
storm a écrit:
J'essaye de recuperer l'adresse de la fonction CreateMutex.
POur ce faire je fais un hDll = LoadLibrary("kernel32") puis un GetProcAddress(hDll, "CreateMutex")
Mais GetProcAddress me renvoie NULL. Cela marche pour certaines fonction (Process32Next) par exemple, mais pas pour d'autres.
Y a t il une autre dll a loader?
CreateMutexA() ou CreateMutexW()
J'ai pas encore testé mais merci pour l'info. Mais une question: Pourquoi? :) je veux dire, aucune doc sur ces deux fonctions dans celle de CreateMutex()!
merci
Au passage j'ai le même problème avec la fonction LoadLibrary()
-- storm
storm wrote:
Christian ASTOR wrote:
storm a écrit:
J'essaye de recuperer l'adresse de la fonction CreateMutex.
POur ce faire je fais un hDll = LoadLibrary("kernel32") puis un
GetProcAddress(hDll, "CreateMutex")
Mais GetProcAddress me renvoie NULL. Cela marche pour certaines
fonction (Process32Next) par exemple, mais pas pour d'autres.
Y a t il une autre dll a loader?
CreateMutexA() ou CreateMutexW()
J'ai pas encore testé mais merci pour l'info.
Mais une question: Pourquoi? :) je veux dire, aucune doc sur ces deux
fonctions dans celle de CreateMutex()!
merci
Au passage j'ai le même problème avec la fonction LoadLibrary()
J'essaye de recuperer l'adresse de la fonction CreateMutex.
POur ce faire je fais un hDll = LoadLibrary("kernel32") puis un GetProcAddress(hDll, "CreateMutex")
Mais GetProcAddress me renvoie NULL. Cela marche pour certaines fonction (Process32Next) par exemple, mais pas pour d'autres.
Y a t il une autre dll a loader?
CreateMutexA() ou CreateMutexW()
J'ai pas encore testé mais merci pour l'info. Mais une question: Pourquoi? :) je veux dire, aucune doc sur ces deux fonctions dans celle de CreateMutex()!
merci
Au passage j'ai le même problème avec la fonction LoadLibrary()
-- storm
Jean-Claude BELLAMY
Dans le message 40181ea3$0$19265$, storm s'est ainsi exprimé :
Christian ASTOR wrote:
storm a écrit:
J'essaye de recuperer l'adresse de la fonction CreateMutex.
POur ce faire je fais un hDll = LoadLibrary("kernel32") puis un GetProcAddress(hDll, "CreateMutex")
Mais GetProcAddress me renvoie NULL. Cela marche pour certaines fonction (Process32Next) par exemple, mais pas pour d'autres.
Y a t il une autre dll a loader?
CreateMutexA() ou CreateMutexW()
J'ai pas encore testé mais merci pour l'info. Mais une question: Pourquoi? :) je veux dire, aucune doc sur ces deux fonctions dans celle de CreateMutex()!
C'est indiqué implicitement :
CreateMutex [...] Requirements Unicode: Implemented as Unicode and ANSI versions.
En règle générale, TOUTE fonction qui admet dans ses paramètres une ou plusieurs chaines (et c'est le cas de CreateMutex) est déclinée en 2 versions : - une en ANSI de nom "xxxxxxxxA" paramètres chaines de type LPCSTR - une en UNICODE de nom "xxxxxxxxW" paramètres chaines de type LPCWSTR
p.ex. "MessageBox" -> MessageBoxA et MessageBoxW "OpenSCManager" -> OpenSCManagerA et OpenSCManagerW "OpenService" -> OpenServiceA et OpenServiceW "ConvertStringSidToSid" -> ConvertStringSidToSidA et ConvertStringSidToSidW ...
Dans le cas d'un appel direct de la focntion (sans loadlibrary...), avec le bon header, on n'a pas à se soucier de la fonction à utiliser, (cas de winbase.h) ... #ifdef UNICODE #define CreateMutex CreateMutexW #else #define CreateMutex CreateMutexA #endif ...
Quelques RARES fonctions utilisant des chaines en paramètres n'existent que dans un seul type P.ex. "CreateProcessWithLogonW" (création d'un processus sous un autre username/password)
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org http://www.bellamyjc.org *
Dans le message 40181ea3$0$19265$79c14f64@nan-newsreader-02.noos.net,
storm <toto@toto.com> s'est ainsi exprimé :
Christian ASTOR wrote:
storm a écrit:
J'essaye de recuperer l'adresse de la fonction CreateMutex.
POur ce faire je fais un hDll = LoadLibrary("kernel32") puis un
GetProcAddress(hDll, "CreateMutex")
Mais GetProcAddress me renvoie NULL. Cela marche pour certaines
fonction (Process32Next) par exemple, mais pas pour d'autres.
Y a t il une autre dll a loader?
CreateMutexA() ou CreateMutexW()
J'ai pas encore testé mais merci pour l'info.
Mais une question: Pourquoi? :) je veux dire, aucune doc sur ces deux
fonctions dans celle de CreateMutex()!
C'est indiqué implicitement :
CreateMutex
[...]
Requirements
Unicode: Implemented as Unicode and ANSI versions.
En règle générale, TOUTE fonction qui admet dans ses paramètres une ou
plusieurs chaines (et c'est le cas de CreateMutex) est déclinée en 2
versions :
- une en ANSI
de nom "xxxxxxxxA"
paramètres chaines de type LPCSTR
- une en UNICODE
de nom "xxxxxxxxW"
paramètres chaines de type LPCWSTR
p.ex.
"MessageBox"
-> MessageBoxA et MessageBoxW
"OpenSCManager"
-> OpenSCManagerA et OpenSCManagerW
"OpenService"
-> OpenServiceA et OpenServiceW
"ConvertStringSidToSid"
-> ConvertStringSidToSidA et ConvertStringSidToSidW
...
Dans le cas d'un appel direct de la focntion (sans loadlibrary...), avec le
bon header, on n'a pas à se soucier de la fonction à utiliser,
(cas de winbase.h)
...
#ifdef UNICODE
#define CreateMutex CreateMutexW
#else
#define CreateMutex CreateMutexA
#endif
...
Quelques RARES fonctions utilisant des chaines en paramètres n'existent que
dans un seul type
P.ex. "CreateProcessWithLogonW"
(création d'un processus sous un autre username/password)
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org Jean-Claude.Bellamy@wanadoo.fr *
JC.Bellamy@free.fr
Dans le message 40181ea3$0$19265$, storm s'est ainsi exprimé :
Christian ASTOR wrote:
storm a écrit:
J'essaye de recuperer l'adresse de la fonction CreateMutex.
POur ce faire je fais un hDll = LoadLibrary("kernel32") puis un GetProcAddress(hDll, "CreateMutex")
Mais GetProcAddress me renvoie NULL. Cela marche pour certaines fonction (Process32Next) par exemple, mais pas pour d'autres.
Y a t il une autre dll a loader?
CreateMutexA() ou CreateMutexW()
J'ai pas encore testé mais merci pour l'info. Mais une question: Pourquoi? :) je veux dire, aucune doc sur ces deux fonctions dans celle de CreateMutex()!
C'est indiqué implicitement :
CreateMutex [...] Requirements Unicode: Implemented as Unicode and ANSI versions.
En règle générale, TOUTE fonction qui admet dans ses paramètres une ou plusieurs chaines (et c'est le cas de CreateMutex) est déclinée en 2 versions : - une en ANSI de nom "xxxxxxxxA" paramètres chaines de type LPCSTR - une en UNICODE de nom "xxxxxxxxW" paramètres chaines de type LPCWSTR
p.ex. "MessageBox" -> MessageBoxA et MessageBoxW "OpenSCManager" -> OpenSCManagerA et OpenSCManagerW "OpenService" -> OpenServiceA et OpenServiceW "ConvertStringSidToSid" -> ConvertStringSidToSidA et ConvertStringSidToSidW ...
Dans le cas d'un appel direct de la focntion (sans loadlibrary...), avec le bon header, on n'a pas à se soucier de la fonction à utiliser, (cas de winbase.h) ... #ifdef UNICODE #define CreateMutex CreateMutexW #else #define CreateMutex CreateMutexA #endif ...
Quelques RARES fonctions utilisant des chaines en paramètres n'existent que dans un seul type P.ex. "CreateProcessWithLogonW" (création d'un processus sous un autre username/password)
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org http://www.bellamyjc.org *
Manuel Leclerc
storm a écrit :
Au passage j'ai le même problème avec la fonction LoadLibrary()
Quand une API Win32 admet en paramètre une chaîne de caractères, l'API est en fait implémentée en deux versions dans les DLLs systèmes. Une version A (pour ANSI, un char = un octet) et une version W (pour Wide, un char = deux octets).
Dans les headers du SDK, il y a truc genre : #ifdef ANSI # define ApiTruc ApiTrucA #else # define ApiTruc ApiTruW #endif
storm a écrit :
Au passage j'ai le même problème avec la fonction LoadLibrary()
Quand une API Win32 admet en paramètre une chaîne de caractères,
l'API est en fait implémentée en deux versions dans les DLLs
systèmes. Une version A (pour ANSI, un char = un octet) et une
version W (pour Wide, un char = deux octets).
Dans les headers du SDK, il y a truc genre :
#ifdef ANSI
# define ApiTruc ApiTrucA
#else
# define ApiTruc ApiTruW
#endif
Au passage j'ai le même problème avec la fonction LoadLibrary()
Quand une API Win32 admet en paramètre une chaîne de caractères, l'API est en fait implémentée en deux versions dans les DLLs systèmes. Une version A (pour ANSI, un char = un octet) et une version W (pour Wide, un char = deux octets).
Dans les headers du SDK, il y a truc genre : #ifdef ANSI # define ApiTruc ApiTrucA #else # define ApiTruc ApiTruW #endif
stormz
"Jean-Claude BELLAMY" wrote in message news:<bv9c6b$ju5$...
Dans le message 40181ea3$0$19265$, storm s'est ainsi exprimé :
> Christian ASTOR wrote: >> storm a écrit: >> >>> J'essaye de recuperer l'adresse de la fonction CreateMutex. >>> >>> POur ce faire je fais un hDll = LoadLibrary("kernel32") puis un >>> GetProcAddress(hDll, "CreateMutex") >>> >>> Mais GetProcAddress me renvoie NULL. Cela marche pour certaines >>> fonction (Process32Next) par exemple, mais pas pour d'autres. >>> >>> Y a t il une autre dll a loader? >> >> >> CreateMutexA() ou CreateMutexW() >> > J'ai pas encore testé mais merci pour l'info. > Mais une question: Pourquoi? :) je veux dire, aucune doc sur ces deux > fonctions dans celle de CreateMutex()!
C'est indiqué implicitement :
CreateMutex [...] Requirements Unicode: Implemented as Unicode and ANSI versions.
En règle générale, TOUTE fonction qui admet dans ses paramètres une ou plusieurs chaines (et c'est le cas de CreateMutex) est déclinée en 2 versions : - une en ANSI de nom "xxxxxxxxA" paramètres chaines de type LPCSTR - une en UNICODE de nom "xxxxxxxxW" paramètres chaines de type LPCWSTR
p.ex. "MessageBox" -> MessageBoxA et MessageBoxW "OpenSCManager" -> OpenSCManagerA et OpenSCManagerW "OpenService" -> OpenServiceA et OpenServiceW "ConvertStringSidToSid" -> ConvertStringSidToSidA et ConvertStringSidToSidW ...
Dans le cas d'un appel direct de la focntion (sans loadlibrary...), avec le bon header, on n'a pas à se soucier de la fonction à utiliser, (cas de winbase.h) ... #ifdef UNICODE #define CreateMutex CreateMutexW #else #define CreateMutex CreateMutexA #endif ...
Quelques RARES fonctions utilisant des chaines en paramètres n'existent que dans un seul type P.ex. "CreateProcessWithLogonW" (création d'un processus sous un autre username/password)
Merci pour toutes ces reponses. Une derniere qustion pour la route: j'essaye de trouver l'adresse de la fonction malloc(). Vu que c'est un appel systeme, je ne sais pas trop ou la trouver. pas de trace dans kernel32.
Une idee?
merci
-- storm
"Jean-Claude BELLAMY" <Jean-Claude.Bellamy@wanadoo.fr> wrote in message news:<bv9c6b$ju5$1@news-reader2.wanadoo.fr>...
Dans le message 40181ea3$0$19265$79c14f64@nan-newsreader-02.noos.net,
storm <toto@toto.com> s'est ainsi exprimé :
> Christian ASTOR wrote:
>> storm a écrit:
>>
>>> J'essaye de recuperer l'adresse de la fonction CreateMutex.
>>>
>>> POur ce faire je fais un hDll = LoadLibrary("kernel32") puis un
>>> GetProcAddress(hDll, "CreateMutex")
>>>
>>> Mais GetProcAddress me renvoie NULL. Cela marche pour certaines
>>> fonction (Process32Next) par exemple, mais pas pour d'autres.
>>>
>>> Y a t il une autre dll a loader?
>>
>>
>> CreateMutexA() ou CreateMutexW()
>>
> J'ai pas encore testé mais merci pour l'info.
> Mais une question: Pourquoi? :) je veux dire, aucune doc sur ces deux
> fonctions dans celle de CreateMutex()!
C'est indiqué implicitement :
CreateMutex
[...]
Requirements
Unicode: Implemented as Unicode and ANSI versions.
En règle générale, TOUTE fonction qui admet dans ses paramètres une ou
plusieurs chaines (et c'est le cas de CreateMutex) est déclinée en 2
versions :
- une en ANSI
de nom "xxxxxxxxA"
paramètres chaines de type LPCSTR
- une en UNICODE
de nom "xxxxxxxxW"
paramètres chaines de type LPCWSTR
p.ex.
"MessageBox"
-> MessageBoxA et MessageBoxW
"OpenSCManager"
-> OpenSCManagerA et OpenSCManagerW
"OpenService"
-> OpenServiceA et OpenServiceW
"ConvertStringSidToSid"
-> ConvertStringSidToSidA et ConvertStringSidToSidW
...
Dans le cas d'un appel direct de la focntion (sans loadlibrary...), avec le
bon header, on n'a pas à se soucier de la fonction à utiliser,
(cas de winbase.h)
...
#ifdef UNICODE
#define CreateMutex CreateMutexW
#else
#define CreateMutex CreateMutexA
#endif
...
Quelques RARES fonctions utilisant des chaines en paramètres n'existent que
dans un seul type
P.ex. "CreateProcessWithLogonW"
(création d'un processus sous un autre username/password)
Merci pour toutes ces reponses.
Une derniere qustion pour la route:
j'essaye de trouver l'adresse de la fonction malloc().
Vu que c'est un appel systeme, je ne sais pas trop ou la trouver. pas
de trace dans kernel32.
"Jean-Claude BELLAMY" wrote in message news:<bv9c6b$ju5$...
Dans le message 40181ea3$0$19265$, storm s'est ainsi exprimé :
> Christian ASTOR wrote: >> storm a écrit: >> >>> J'essaye de recuperer l'adresse de la fonction CreateMutex. >>> >>> POur ce faire je fais un hDll = LoadLibrary("kernel32") puis un >>> GetProcAddress(hDll, "CreateMutex") >>> >>> Mais GetProcAddress me renvoie NULL. Cela marche pour certaines >>> fonction (Process32Next) par exemple, mais pas pour d'autres. >>> >>> Y a t il une autre dll a loader? >> >> >> CreateMutexA() ou CreateMutexW() >> > J'ai pas encore testé mais merci pour l'info. > Mais une question: Pourquoi? :) je veux dire, aucune doc sur ces deux > fonctions dans celle de CreateMutex()!
C'est indiqué implicitement :
CreateMutex [...] Requirements Unicode: Implemented as Unicode and ANSI versions.
En règle générale, TOUTE fonction qui admet dans ses paramètres une ou plusieurs chaines (et c'est le cas de CreateMutex) est déclinée en 2 versions : - une en ANSI de nom "xxxxxxxxA" paramètres chaines de type LPCSTR - une en UNICODE de nom "xxxxxxxxW" paramètres chaines de type LPCWSTR
p.ex. "MessageBox" -> MessageBoxA et MessageBoxW "OpenSCManager" -> OpenSCManagerA et OpenSCManagerW "OpenService" -> OpenServiceA et OpenServiceW "ConvertStringSidToSid" -> ConvertStringSidToSidA et ConvertStringSidToSidW ...
Dans le cas d'un appel direct de la focntion (sans loadlibrary...), avec le bon header, on n'a pas à se soucier de la fonction à utiliser, (cas de winbase.h) ... #ifdef UNICODE #define CreateMutex CreateMutexW #else #define CreateMutex CreateMutexA #endif ...
Quelques RARES fonctions utilisant des chaines en paramètres n'existent que dans un seul type P.ex. "CreateProcessWithLogonW" (création d'un processus sous un autre username/password)
Merci pour toutes ces reponses. Une derniere qustion pour la route: j'essaye de trouver l'adresse de la fonction malloc(). Vu que c'est un appel systeme, je ne sais pas trop ou la trouver. pas de trace dans kernel32.
Une idee?
merci
-- storm
Manuel Leclerc
storm a écrit :
j'essaye de trouver l'adresse de la fonction malloc(). Vu que c'est un appel systeme, je ne sais pas trop ou la trouver. pas de trace dans kernel32.
malloc() est une API de la librairie standard du C, ce n'est pas un appel système Win32. Si ton programme utilise la run-time du C en DLL, tu peux prendre l'adresse comme avec une API Win32, mais la DLL est une des DLL resdistribuables de ton environnement de développement. Si tu link la librairies C en statique, l'adresse tu peux l'avoir sans GetProcAddress :-)
Pourquoi tu prends toutes ces adresses ? Un outils de trace ?
storm a écrit :
j'essaye de trouver l'adresse de la fonction malloc().
Vu que c'est un appel systeme, je ne sais pas trop
ou la trouver. pas de trace dans kernel32.
malloc() est une API de la librairie standard du C, ce
n'est pas un appel système Win32. Si ton programme
utilise la run-time du C en DLL, tu peux prendre
l'adresse comme avec une API Win32, mais la DLL
est une des DLL resdistribuables de ton environnement
de développement. Si tu link la librairies C en statique,
l'adresse tu peux l'avoir sans GetProcAddress :-)
Pourquoi tu prends toutes ces adresses ? Un outils de
trace ?
j'essaye de trouver l'adresse de la fonction malloc(). Vu que c'est un appel systeme, je ne sais pas trop ou la trouver. pas de trace dans kernel32.
malloc() est une API de la librairie standard du C, ce n'est pas un appel système Win32. Si ton programme utilise la run-time du C en DLL, tu peux prendre l'adresse comme avec une API Win32, mais la DLL est une des DLL resdistribuables de ton environnement de développement. Si tu link la librairies C en statique, l'adresse tu peux l'avoir sans GetProcAddress :-)
Pourquoi tu prends toutes ces adresses ? Un outils de trace ?
Møgluglu
Jean-Claude BELLAMY a écrit:
Quelques RARES fonctions utilisant des chaines en paramètres n'existent que dans un seul type P.ex. "CreateProcessWithLogonW" (création d'un processus sous un autre username/password)
Il me semble que c'est aussi le cas pour toutes les API introduites depuis Windows XP (Themes, Visual Styles, GDI+, ...)
-- Møgluglu
Jean-Claude BELLAMY a écrit:
Quelques RARES fonctions utilisant des chaines en paramètres
n'existent que dans un seul type
P.ex. "CreateProcessWithLogonW"
(création d'un processus sous un autre username/password)
Il me semble que c'est aussi le cas pour toutes les API introduites
depuis Windows XP (Themes, Visual Styles, GDI+, ...)
Quelques RARES fonctions utilisant des chaines en paramètres n'existent que dans un seul type P.ex. "CreateProcessWithLogonW" (création d'un processus sous un autre username/password)
Il me semble que c'est aussi le cas pour toutes les API introduites depuis Windows XP (Themes, Visual Styles, GDI+, ...)
-- Møgluglu
Christian ASTOR
storm a écrit:
j'essaye de trouver l'adresse de la fonction malloc(). Vu que c'est un appel systeme, je ne sais pas trop ou la trouver. pas de trace dans kernel32.
Pas vraiment Système, C Run-Time => CRT => MSVCRT[n].DLL Mais à part pour faire de l'API hooking, je ne vois pas trop l'intérêt...
storm a écrit:
j'essaye de trouver l'adresse de la fonction malloc().
Vu que c'est un appel systeme, je ne sais pas trop ou la trouver. pas
de trace dans kernel32.
Pas vraiment Système, C Run-Time => CRT => MSVCRT[n].DLL
Mais à part pour faire de l'API hooking, je ne vois pas trop l'intérêt...