|
|
OpenProcess | 整数型 | | |
kernel32.dll | |
OpenProcess | |
dwDesiredAccess | 整数型 | | | bInheritHandle | 逻辑型 | | | dwProcessId | 整数型 | | |
|
VirtualQueryEx | 整数型 | | |
kernel32.dll | |
VirtualQueryEx | |
hProcess | 整数型 | | | lpAddress | 整数型 | | | lpBuffer | 内存基本信息 | | | dwLength | 整数型 | | |
|
CloseHandle | 逻辑型 | | |
kernel32.dll | |
CloseHandle | |
hObject | 整数型 | | |
|
内存基本信息 | | |
BaseAddress | 整数型 | | | AllocationBase | 整数型 | | | AllocationProtect | 整数型 | | | RegionSize | 整数型 | | | State | 整数型 | | | Protect | 整数型 | | | Type | 整数型 | | |
|
PROCESS_QUERY_INFORMATION | | | MEM_COMMIT | | | PAGE_READWRITE | | |
|
内存地址是否有效 | 逻辑型 | | |
目标进程ID | 整数型 | | | | 内存地址 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | hProcess | 整数型 | | | mbi | 内存基本信息 | | | 结果 | 整数型 | | |
hProcess = OpenProcess (PROCESS_QUERY_INFORMATION, 假, 目标进程ID ) 如果真 (hProcess = 0 ) 返回 (假)  结果 = VirtualQueryEx (hProcess, 内存地址, mbi, 28 ) CloseHandle (hProcess )返回 (结果 ≠ 0 且 mbi.State = MEM_COMMIT 且 位与 (mbi.Protect, PAGE_READWRITE ) ≠ 0 ) |
获取内存详细信息 | 文本型 | | |
目标进程ID | 整数型 | | | | 内存地址 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | hProcess | 整数型 | | | mbi | 内存基本信息 | | | 结果 | 整数型 | | |
hProcess = OpenProcess (PROCESS_QUERY_INFORMATION, 假, 目标进程ID ) 如果真 (hProcess = 0 ) 返回 ("打开进程失败" ) 结果 = VirtualQueryEx (hProcess, 内存地址, mbi, 28 )CloseHandle (hProcess ) 如果真 (结果 = 0 ) 返回 ("地址无效" ) 返回 ("起始地址:" + 到文本 (mbi.BaseAddress ) + #换行符 + "区域大小:" + 到文本 (mbi.RegionSize ) + " 字节" + #换行符 + "内存状态:" + 选择 (mbi.State = 0x1000, "已提交", "保留/空闲" ) + #换行符 + "保护属性:" + 取保护属性描述 (mbi.Protect )) 判断 (位与 (Protect, 0x01 ) ≠ 0 ) 结果 = "PAGE_NOACCESS" 判断 (位与 (Protect, 0x02 ) ≠ 0 ) 结果 = "PAGE_READONLY" 判断 (位与 (Protect, 0x04 ) ≠ 0 ) 结果 = "PAGE_READWRITE" 判断 (位与 (Protect, 0x08 ) ≠ 0 ) 结果 = "PAGE_WRITECOPY" 判断 (位与 (Protect, 0x10 ) ≠ 0 ) 结果 = "PAGE_EXECUTE" 判断 (位与 (Protect, 0x20 ) ≠ 0 ) 结果 = "PAGE_EXECUTE_READ" 判断 (位与 (Protect, 0x40 ) ≠ 0 ) 结果 = "PAGE_EXECUTE_READWRITE"  结果 = "未知属性" 返回 (结果 + " (0x" + 取十六进制文本 (Protect ) + " )" )
补充内容 (2025-4-9 19:39):
三个常亮分别是0x0400,0x1000,0x04 |
|