Hooks mit VB?

05/09/2005 20:01 langweiler#1
Nabend,
Ich versuch mich momentan den Tinytoon Hook hiermit zum implementieren, da mich Forceshock langsam.... :eek:
Wär nett wenn jemand noch sinnvolle Beispiele dazu hätte, ua. selbst Erfahrung damit hat.


Code:
Option Explicit 

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long 
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long 
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long 
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long 
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long 
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer 

Private Const PROCESS_ALL_ACCESS As Long = &H1F0FFF

Code:
Private Sub Command1_Click() 
Dim hwnd As Long 
Dim pid As Long 
Dim pHandle As Long 
Dim x As Integer 

hwnd = FindWindow(vbNullString, "World Of Warcraft") 

If (hwnd = 0) Then 
 * *Label1.Caption = "Game not running!" 
 * *Exit Sub 
End If 

GetWindowThreadProcessId hwnd, pid 

pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid) 

If (pHandle = 0) Then 
 * *Label1.Caption = "Couldn't get a process handle." 
 * *Exit Sub 
End If 

WriteProcessMemory pHandle, PLACE YOUR CODE HERE TO WRITE TO THE GAME 

CloseHandle pHandle 
End Sub
Bsp.

Code:
WriteProcessMemory pHandle, CE79f10, 0f, 02, 0&
lang
05/14/2005 23:25 CyRuSTheViRuS#2
VB6 wär nich wirklich die ideale sprache für solche dinge :P solltest lieber c++ oder so dafür nehmen,
gibt aber viele schöne bücher zu vb hooking ... eins davon heisst glaub ich "Subclassing and hooking in VB6" such ma dannach vielleicht findest n ebook oda nen billiges bei amazon.de
05/19/2005 00:12 langweiler#3
Das ist nett, danke.
08/05/2005 17:58 neji#4
man kann mit vb keine Hook dll's schreiben!
08/15/2005 14:18 verT!c4L#5
versucht es mit delphi 7, über hooking gibts gute Tutorials hier:

[Only registered and activated users can see links. Click Here To Register...]
08/18/2005 11:52 CyRuSTheViRuS#6
Quote:
Originally posted by neji@Aug 5 2005, 17:58
man kann mit vb keine Hook dll's schreiben!
wer sagt das :P ?
08/19/2005 09:26 m4k3zz#7
soweit ich weiß kann man die dll selbst nicht in VB schreiben,
die müsste man vorher in c machen..
aber danach mit vb die dll integrieren geht.
08/19/2005 10:44 Maybe It's Maybelline#8
Man kann mit vb dll hooks machen.
[Only registered and activated users can see links. Click Here To Register...]
08/20/2005 16:06 CyRuSTheViRuS#9
[Only registered and activated users can see links. Click Here To Register...]
08/24/2005 16:41 neji#10
Dann schreib mir mal einen...nen ganz simplen...ohne 3rd Party DLL's und so
08/28/2005 18:04 CyRuSTheViRuS#11
... hol dir "Hooking and Subclassing in Visual Basic 6" kauf dir das Buch oder hol dir das ebook, ka wo es das gibt, da wird alllllles schön erklärt, wird auch erklärt was Hooks sind :)
08/29/2005 09:18 neji#12
Ich glaube wir missverstehen uns hier. Ich sagte nicht, dass es nicht möglich ist mit VB hooks zu schreiben, sondern nur, dass es nicht möglich ist die eigentlich Hook DLL selbst in VB zu schreiben, da man mit VB nur ActiveX-DLLs schreiben kann und so auf Fremdherstellerkomponenten angewiesen ist.
08/29/2005 20:16 CyRuSTheViRuS#13
nein man kann in vb6 nicht NUR ActiveX-DLLs schreiben :P
man kann auch richtige system dlls schreiben die global von jeder anderen sprache verwendet werden können, soweit ich das weiss
08/29/2005 21:44 neji#14
Quote:
Den programmiertechnischen Mechanismus, diese Funktionalität zu erreichen, nennt man "Tastatur-Hook". Um ihn systemweit nutzen zu können wird eine Standard-DLL benötigt, die eine Empfängerfunktion für Nachrichten bei Betätigung einer Taste zur Verfügung stellt. Hier ist bereits eine Grenze gesetzt: Da Visual Basic zwar "ActiveX"-DLLs, nicht aber Standard-DLLs erstellen kann, bleibt dieser Weg zur direkten Nutzung unter Visual Basic 6.0 versperrt (natürlich lässt sich unter Zuhilfenahme von Fremdherstellerkomponenten auch dieses Ansinnen realisieren).
Quelle : msdn von Microsoft...die werden ja wohl wissen, was mit vb geht und was nicht :)

[Only registered and activated users can see links. Click Here To Register...]
08/30/2005 15:01 CyRuSTheViRuS#15
oh mann neji.... du bist auchn held msdn zu benutzen...
msdn, microsoft lol ja klar....

1. denkst du da steht auch wie du multithreading in vb6 hinkriegst ? nein das kriegst nur mit api hin, da multithreading so von vb6 aus nicht möglich ist


2. denkst du da steht drin wie man mit vb6 konsolenproggs macht ? nein das kriegst du nur mit api hin, da konsolenproggs von vb6 aus normal nit möglich sind x.x

und was lernen wir daraus ? auf msdn und microsoft seiten findest du zu vb6 nur solche infos die von haus aus funzen, die vb6 also 100%ig unterstützt ohne irgendwelche spezielle api kagge