浮岛物语资源修改器/读模块基址

易语言 2020-03-12 15:30:51

浮岛物语资源修改器/读模块基址

.子程序 读模块基址, 文本型, , 仿CE的 模块名+偏移指针 例如: d3dx9_37.dll+00187E30 或 GameMain.exe+000735C8 返回十六进制文本型地址
.参数 进程PID, 整数型, , 进程的PID
.参数 模块名称, 文本型, , 模块的名称
.参数 模块偏移, 文本型, 可空, 模块的偏移
.局部变量 变量, 整数型
.局部变量 信息, 模块信息型, , "0"
.局部变量 取出模块基址, 整数型

取进程模块 (进程PID, 信息)
.计次循环首 (取数组成员数 (信息), 变量)
.如果 (模块名称 = 到文本 (信息 [变量].模块文件名) = 真)
取出模块基址 = 信息 [变量].base + 十六转十进制 (模块偏移)
跳出循环 ()
.否则

.如果结束

.计次循环尾 ()
返回 (十转十六进制 (取出模块基址))

.子程序 取进程模块, 整数型, , 失败为0,成功返回模块数量(该命令为高级成员命令)
.参数 进程ID, 整数型, 可空, 为空 则取当前进程模块
.参数 模块信息数组, 模块信息型, 可空 数组, 返回的模块信息 数组
.局部变量 快照句柄, 整数型
.局部变量 模块信息, 模块信息型
.局部变量 进程句柄, 整数型
.局部变量 临时模块信息, 模块信息型, , "0"

快照句柄 = _创建快照 (8, 进程ID)
.如果真 (快照句柄 = 0)
返回 (0)
.如果真结束
模块信息.size = 1024
进程句柄 = _第一个模块 (快照句柄, 模块信息)
.判断循环首 (进程句柄 ≠ 0)
加入成员 (临时模块信息, 模块信息)
进程句柄 = _下一个模块 (快照句柄, 模块信息)
.判断循环尾 ()
_关闭对象 (快照句柄)
模块信息数组 = 临时模块信息
返回 (取数组成员数 (临时模块信息))