cs_gi
Messages postés58Date d'inscriptionmardi 20 janvier 2004StatutMembreDernière intervention12 février 2005
-
7 déc. 2004 à 22:26
barley
Messages postés107Date d'inscriptionjeudi 28 janvier 2010StatutMembreDernière intervention28 janvier 2010
-
8 déc. 2004 à 17:27
bonsoir à tous,
je cherche a sub classer un programme commercial. J'ai trouvé sur le site differentes sources qui traitent du sujet.
(www.vbfrance.com/code.aspx?ID=4115)
voici le code que j'utilise
Public Sub HookNoah()
Dim hwnd As Long
hwnd = FindWindow(vbNullString, "NOAH")
Call SendMessage(hwnd, WM_SETTEXT, 0, ByVal "NOAH Interfacé")
OldProc = SetWindowLong(ByVal hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub UnHookNoah()
Dim hwnd As Long
hwnd = FindWindow(vbNullString, "NOAH")
Call SetWindowLong(ByVal hwnd, GWL_WNDPROC, OldProc)
End Sub
Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case uMsg
Case WM_ACTIVATE: Beep
Case WM_MOVE: Beep
Case WM_LBUTTONDOWN: Beep
End Select
WindowProc = CallWindowProc(OldProc, hwnd, uMsg, wParam, lParam)
End Function
la function WindowProc n'est jamais appellée si le hwnd correspont à la fenetre de mon programme commercial.j'ai bien sur controlé que le hwnd etait correct.
Par contre avec le meme code si le hwnd est celui d'une fenetre VB : ça marche ???????????????
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 7 déc. 2004 à 23:16
Ben heureusement que c'est pas aussi simple, tout ceci est fini depuis 10 ans dans le monde Windows, il y a separation absolue des espaces memoire.
Il faut injecter le code voulu DANS l'espace memoire du processus cible pour agir dessus.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 7 déc. 2004 à 23:54
Bien sur que tout est possible sur Windows mais des qu'il s'agit de prog systeme il faudra du langage natif compile. On ne peut bien entendu injecter que du code executable sans interpretation dans un autre processus et non du script VB.
Il y a 2 techniques principales:
- CreateRemoteThread().
- Injection de DLL par un hook.
La seconde est a preferer car tu ne risques pas d'interception par un antivirus et elle est nettement plus simple.