VB读取线程、句柄及写入内存的API代码实例
作者:WarmHope
时间:2026-06-29
来源:互联网
浏览:0
演示了一套VB通过API读取线程、句柄及写入内存的实用代码,核心函数包括ReadProcessMemory、WriteProcessMemory和VirtualAllocEx,并涵盖窗口句柄获取、线程ID提取、进程打开与释放等基础API,完整覆盖进程操作全链路,适用于系统调试与辅助工具开发。
这里演示一套 VB 通过 API 读取线程、句柄以及写入内存的实用代码。如果你对系统底层编程感兴趣,这套接口非常值得收藏。通过它,可以获取到目标线程 ID,向指定进程写入内存,或者从进程内存中读取数据。核心函数包括:ReadProcessMemory 用于读取进程内存,WriteProcessMemory 用于写入,VirtualAllocEx 负责在目标进程内分配内存。代码中还包含了窗口句柄获取、线程 ID 提取、进程打开与释放等基础 API,覆盖了进程操作的全链路。

废话不多说,直接上代码:
Attribute VB_Name = "API" Option Explicit Public Declare Function GetDesktopWindow Lib "User32.DLL" () As Long Public Declare Function FindWindow Lib "User32.DLL" Alias "FindWindowA" (ByVal ClassName As String, ByVal Caption As String) As Long Public Declare Function GetWindow Lib "User32.DLL" (ByVal hwnd As Long, ByVal wCmd As Long) As Long Public Declare Function GetWindowText Lib "User32.DLL" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Public Const GW_CHILD = (5) Public Const GW_HWNDNEXT = (2) Public Declare Function GetWindowThreadProcessId Lib "User32.DLL" (ByVal hwnd As Long, ProcessId As Long) As Long '取找线程ID(句柄,返回的线程ID) Public Declare Function OpenProcess Lib "Kernel32.DLL" (ByVal 操作权限 As Long, ByVal 继承句柄 As Long, ByVal 线程ID As Long) As Long Public Declare Function ReadProcessMemory Lib "Kernel32.DLL" (ByVal 进程柄 As Long, ByVal 内存位置 As Long, 缓冲区 As Any, ByVal 长度 As Long, lpNumberOfBytesWritten As Long) As Long '读取进程(进程句柄,ByVal 内存区地址,读取来的数据存放处,要读取的长度,已经读取的长度[0]) Public Declare Function WriteProcessMemory Lib "Kernel32.DLL" (ByVal 进程柄 As Long, 内存位置 As Any, 缓冲区 As Any, ByVal 长度 As Long, lpNumberOfBytesWritten As Long) As Long '写内存(进程句柄,ByVal 内存区地址,数据,总长度,已经完成长度[0]) Public Declare Function CloseHandle Lib "Kernel32.DLL" (ByVal 进程柄 As Long) As Long '释放(进程句柄)'不释放会出错 Public Const STANDARD_RIGHTS_REQUIRED = &HF0000 Public Const SYNCHRONIZE = &H100000 Public Const RRAD_WRITE = &H1F0FFF Public Const PROCESS_VM_OPERATION = &H8& Public Const 读取 = &H10& Public Const 写入 = &H20& '---------变量转换API Public Declare Sub MOV Lib "Kernel32.DLL" Alias "RtlMoveMemory" (变量1 As Any, 变量2 As Any, ByVal 长度 As Long) '---------内存保护分配释放 Public Declare Function VPE Lib "Kernel32.DLL" Alias "VirtualProtectEx" (ByVal 进程柄 As Long, 地址 As Any, ByVal 长度 As Long, ByVal flNewProtect As Long, lpflOldProtect As Long) As Long Public Declare Function VAE Lib "Kernel32.DLL" Alias "VirtualAllocEx" (ByVal 进程柄 As Long, ByVal 地址 As Long, ByVal 长度 As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long '内存分配(进程柄,地址[好像只要丢个0进去就行],长度,权限1[MEM_COMMIT],权限2[PAGE_READWRITE])返回:分配到的内存起始地址 Public Declare Function VFE Lib "Kernel32.DLL" Alias "VirtualFreeEx" (ByVal 进程柄 As Long, ByVal 地址 As Long, ByVal 长度 As Long, ByVal 释放类型 As Long) As Long Public Const MEM_COMMIT = &H1000 Public Const PAGE_READWRITE = &H4 Public Const STILL_ACTIVE = &H103& Public Const INFINITE = &HFFFF '---------取模块函数位置API Public Declare Function GetModuleHandle Lib "Kernel32.DLL" Alias "GetModuleHandleA" (ByVal ModuleName As String) As Long Public Declare Function LoadLibrary Lib "Kernel32.DLL" Alias "LoadLibraryA" (ByVal ModuleName As String) As Long Public Declare Function GetProcAddress Lib "Kernel32.DLL" (ByVal hModule As Long, ByVal ProcName As String) As Long Public Declare Function CreateRemoteThread Lib "Kernel32.DLL" (ByVal 进程柄 As Long, lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long Public Declare Function GetTickCount Lib "kernel32" () As Long
作者最新文章
思源笔记
2026-09-16 17:42
在线PDF转TXT操作步骤与乱码排查指南
2026-09-04 13:02
PDF加水印后如何检查显示效果?在线工具操作步骤与避坑指南
2026-09-03 13:02
Xshell保持连接不断开及会话文件本地存储路径详解
2026-09-03 06:02
两个PDF怎么合并成一个?在线合并后怎么检查顺序?
2026-09-02 20:00
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多
Windows 10
Windows
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式
Windows/macOS/Linux
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















