Sys.MemoryRead 读取内存(不支持IOS)

文章目录
  1. 1. 功能
  2. 2. 语法
  3. 3. 参数
  4. 4. 返回值
  5. 5. 示例
  6. 6. 备注

功能

读取应用指定内存地址所对应的值。

语法

结果 = Sys.MemoryRead(应用名称, 内存地址, 数据类型)

参数

参数 数据类型 解释
应用名称 字符串 待搜索的应用程序包名。
内存地址 字符串 以0x开头的的字符串地址,如:”0x40947bf8”。
数据类型 字符串 搜索的数据类型,参数必须为 (‘I8’ ‘I16’ ‘I32’ ‘I64’ ‘U8’ ‘U16’ ‘U32’ ‘U64’ ‘F32’ ‘F64’)其中之一。

返回值

字符串,字符串型,读取到的数值,读取不到返回false。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Dim 当前应用包名
当前应用包名 = sys.GetFront()
TracePrint 当前应用包名
'以下是以"比武招亲(武林萌主)游戏为例子,通过搜索内存返回的结果进行偏移读取人物信息面板里的等级、经验等数据"
Dim addr = "0x0"
'下面定义的表数据可通过烧饼修改器等内存搜索工具来查找对比获得
Dim tb1 = {"lv":5389}
Dim tb2 = {"lv":5390,"offset":24}
Dim tb = {tb1, tb2}
Dim t = TickCount()
Dim A = Sys.MemorySearch(当前应用包名, True,addr, tb, "i32",0,1)
TracePrint "搜索地址为:"&A(0)&",耗时"&(TickCount()-t)
Dim 等级地址 = 地址相加(A(0), 116)
TracePrint "当前等级为:"&Sys.MemoryRead(当前应用包名,等级地址, "i32")
Dim 当前经验值地址 = 地址相加(A(0), 128)
TracePrint "当前经验值为:"&Sys.MemoryRead(当前应用包名,当前经验值地址, "i32")
Dim 战斗力地址 = 地址相加(A(0), 236)
TracePrint "当前战斗力为:"&Sys.MemoryRead(当前应用包名,战斗力地址, "i32")
Function 地址相加(地址, 偏移)
Dim A = Right(地址,Len(地址)-2)
Dim B = Clng("0x"&A)
Dim C = B+偏移
Dim D = Hex(C)
Dim E = "0x"&D
地址相加 = E
End Function

备注

数据类型的各个含义

名称 含义
i8 有符号8位
i16 有符号16位
i32 有符号32位
i64 有符号64位
u8 无符号8位
u16 无符号16位
u32 无符号32位
u64 无符号64位
f32 32位浮点数
f64 64位浮点数