Das in diesem Artikel beschriebene Beispiel ist eine API für VB zum Lesen von Speicher, Threads und Handles. Sie ist für die VB-Programmierung hilfreich und kann bei Bedarf auf sie zurückgreifen. Diese API kann die Thread-ID, den Schreibspeicher, einschließlich des Prozesshandles, die ByVal-Speicherbereichsadresse, die Daten, die Gesamtlänge, die abgeschlossene Länge, den Leseprozess, einschließlich des Prozesshandles, die ByVal-Speicherbereichsadresse und den Speicherort der gelesenen Daten abrufen Zu lesende Länge, die Länge, die gelesen wurde, Speicherzuordnung (Prozesshandle, Adresse [wirf einfach eine 0 hinein, scheint zu reichen], Länge, Berechtigung 1 [MEM_COMMIT], Berechtigung 2 [PAGE_READWRITE]), Rückgabe: die zugewiesene Speicher startet Startadresse und andere Funktionen.
Der spezifische Implementierungscode lautet wie folgt:
Attribut VB_Name = „API“Option ExplicitPublic Declare Function GetDesktopWindow Lib „User32.DLL“ () As LongPublic Declare Function FindWindow Lib „User32.DLL“ Alias „FindWindowA“ (ByVal ClassName As String, ByVal Caption As String) As LongPublic Declare Funktion GetWindow Lib „User32.DLL“ (ByVal hwnd As Long, ByVal wCmd As Long) As LongPublic Declare Function GetWindowText Lib „User32.DLL“ Alias „GetWindowTextA“ (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As LongPublic Const GW_CHILD = (5)Public Const GW_HWNDNEXT = ( 2) Öffentliche Deklarationsfunktion GetWindowThreadProcessId Lib „User32.DLL“ (ByVal hwnd As Long, ProcessId As Long) As Long' Thread-ID abrufen (Handle, zurückgegebene Thread-ID) Öffentliche Deklarationsfunktion OpenProcess Lib „Kernel32.DLL“ (ByVal-Vorgangsberechtigung As Long, ByVal-Vererbungshandle As Long , ByVal Thread-ID As Long) As LongPublic Declare Function ReadProcessMemory Lib „Kernel32.DLL“ (ByVal Prozesshandle As Long, ByVal Speicherort As Long, Buffer As Any, ByVal Length As Long, lpNumberOfBytesWritten As Long) As Long'Read-Prozess (Prozesshandle, ByVal-Speicherbereichsadresse, Lesedatenspeicherort, zu lesende Länge). Länge, die gelesen wurde [0]) Öffentliche Deklarationsfunktion WriteProcessMemory Lib „Kernel32.DLL“ (ByVal-Prozesshandle As Long, Speicherort As Any, Buffer As Any, ByVal Length As Long, lpNumberOfBytesWritten As Long) As Long'Speicher schreiben (Prozesshandle, ByVal-Speicherbereichsadresse, Daten, Gesamtlänge, abgeschlossene Länge [0]) Public Declare Function CloseHandle Lib „Kernel32.DLL“ (ByVal Prozesshandle As Long) As Long „Release (Prozesshandle)“ führt zu einem Fehler, wenn es nicht freigegeben wird. Public Const STANDARD_RIGHTS_REQUIRED = &HF0000Public Const SYNCHRONIZE = &H100000Public Const RRAD_WRITE = &H1F0FFFPublic Const PROCESS_VM_OPERATION = &H8&Public Const Read = &H10&Public Const Write = &H20&'---------Variable ConversionAPIPublic Declare Sub MOV Lib „Kernel32.DLL“ Alias "RtlMoveMemory" (Variable 1 als beliebig, Variable 2 als beliebig, ByVal-Länge als lang)'---------Memory Protection Allocation Release Public Declare Function VPE Lib "Kernel32.DLL" Alias " VirtualProtectEx“ (ByVal-Prozesshandle As Long, Adresse As Any, ByVal-Länge As Long, ByVal flNewProtect As Long, lpflOldProtect As Long) As LongPublic Deklarieren Sie die Funktion VAE Lib „Kernel32.DLL“ Alias „VirtualAllocEx“ (ByVal-Prozesshandle As Long, ByVal-Adresse As Long, ByVal-Länge As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Lange Speicherzuweisung (Prozesshandle, Adresse [einfach eine 0 hineinwerfen scheint zu reichen], Länge, Berechtigung 1 [MEM_COMMIT], Berechtigung 2 [PAGE_READWRITE]) gibt zurück: die Startadresse des zugewiesenen Speichers. Public Declare Function VFE Lib „Kernel32 . DLL“ Alias „VirtualFreeEx“ (ByVal-Prozesshandle As Long, ByVal-Adresse As Long, ByVal-Länge As Long, ByVal-Release-Typ As Long) As LongPublic Const MEM_COMMIT = &H1000Public Const PAGE_READWRITE = &H4Public Const STILL_ACTIVE = &H103&Public Const INFINITE = &HFFFF'---------Speicherort der Modulfunktion abrufen APIPublic Declare Function GetModuleHandle Lib "Kernel32.DLL" Alias "GetModuleHandleA" (ByVal ModuleName As String) Als LongPublic Deklarieren Sie die Funktion LoadLibrary Lib „Kernel32.DLL“ Alias „LoadLibraryA“ (ByVal ModuleName As String) als LongPublic Deklarieren Sie die Funktion GetProcAddress Lib „Kernel32.DLL“ (ByVal hModule As Long, ByVal ProcName As String) als LongPublic Deklarieren Sie die Funktion CreateRemoteThread Lib „ Kernel32. DLL“ (ByVal-Prozesshandle As Long, lpThreadAttributes As Long, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As LongPublic Declare Function GetTickCount Lib "kernel32" () As Long