- 注册时间
- 2011-3-10
- 最后登录
- 1970-1-1
该用户从未签到
|
贴源码啦
懒得打字
原理就是 内存搜索
.版本
搜索特征码 (进程PID, { 106, 10, 139, 205, 232, 254, 237 }, “飞天”)
' 搜索特征码 (进程PID, { 116, 53, 139, 148, 36, 148 }, “穿墙”)
.子程序 搜索特征码
.参数 目标PID, 字节集
.参数 搜索内容, 字节集
.参数 搜索类型, 文本型
.局部变量 长度, 整数型
.局部变量 内存块长度, 整数型
.局部变量 内存地址, 整数型
.局部变量 内存块信息, MEMORY_BASIC_INFORMATION
.局部变量 数据缓冲区, 字节集
.局部变量 读取结果, 整数型
.局部变量 开始地址, 整数型
.局部变量 计次, 整数型
.局部变量 进程句柄, 整数型
.如果真 (取字节集数据 (目标PID, #整数型, ) = )
返回 ()
.如果真结束
进程句柄 = OpenProcess (2035711, 假, 取字节集数据 (目标PID, 3, ))
.如果真 (搜索类型 = “飞天”)
清除数组 (飞天地址)
.如果真结束
.如果真 (搜索类型 = “穿墙”)
清除数组 (穿墙地址)
.如果真结束
内存块长度 =
' 搜索内容 = { 106, 10, 139, 205 }
长度 = 取字节集长度 (搜索内容)
.判断循环首 (VirtualQueryEx (进程句柄, 内存地址, 内存块信息, 内存块长度) ≠0)
.如果真 (内存块信息.RegionSize = )
数据缓冲区 = 取空白字节集 (内存块信息.RegionSize)
读取结果 = ReadProcessMemory (进程句柄, 内存地址, 数据缓冲区, 内存块信息.RegionSize, 0)
处理事件 ()
.判断循环首 (读取结果 > )
开始地址 = 寻找字节集 (数据缓冲区, 搜索内容, 开始地址)
.如果 (开始地址 = -1)
跳出循环 ()
.否则
.如果真 (搜索类型 = “飞天”)
加入成员 (飞天地址, 到数值 (内存地址 + 开始地址 - ))
.如果真结束
.如果真 (搜索类型 = “穿墙”)
加入成员 (穿墙地址, 到数值 (内存地址 + 开始地址 - ))
.如果真结束
.如果结束
开始地址 = 开始地址 + 长度
处理事件 ()
.判断循环尾 ()
.如果真结束
内存地址 = 内存地址 + 内存块信息.RegionSize
处理事件 ()
.判断循环尾 ()
CloseHandle (进程句柄)
返回 () |
|